[原创]Flash三维向量类的应用讲座(1)
以前讲了如何用面向对象的方法来实现在Flash中建立一个三维的向量类,这一次讲一个例子,来说明这个类在实际中的应用。其实这个例子用不到太复杂的方法,只是简单的应用了向量的加法和和二维向量的转化。 所以,使用模拟空间的雪花下落来实现这个例子。
[swf]http://ilovelassie.tengyi.cn/flash/direct/3Dsnow.swf[/swf]
[[i] Last edited by 紫色流星 on 2005-10-15 at 18:45 [/i]] 以开始讲了
赶快搬个凳子过来听:) 首先,建立一个电影剪辑。画一个白色的实心圆,半径4.5,圆心0,0
并且连接导出为snow
效果如下: 然后在第一帧输入如下代码:
引用我们编写的三维类,设置舞台不缩放。
[code]#include "Vector3D.as"
Stage.scaleMode = "noScale";[/code] 再设置一些基本变量:
d是观察距离
a是存储雪花的数组
i是循环变量
q是雪花数量
w是雪花在空间的空间限制,不超过正负q/2
speed 就是雪花移动的速度,可以由鼠标滚轮控制
[code]var d:Number = new Number(2000);
var a:Array = new Array();
var i:Number = new Number(0);
var q:Number = new Number(200);
var w:Number = new Number(q/2);
var speed:Number = new Number(150);[/code] 建立一个雪花的类
[code]// Snow类的构造函数
_global.Snow = function(x, y, z, n) {
this.scale = random(80)+20;
this.pos = new v3d(x, y, z);
this.mc = _root.attachMovie("snow", "snow"+n, n);
};[/code] 一个雪花的方法
[code]// 刷新位置
Snow.prototype.update = function(d) {
var b = (this.pos.x+d)/20;
var v2 = this.pos.v3dtov2d(d);
this.mc.setXY(v2, true);
with (this.mc) {
_xscale = _yscale=(b+20+this.scale)/3;
}
};[/code] 对影片的初始化:
[code]_root.onLoad = function() {
for (var i = 0; i<25; i++) {
a[i] = new Snow(random(4000)-2000, random(q)-w, random(q)-w, i);
a[i].update(d);
}
//复制25个雪花到数组,并且位置随机
mym = new Object();
mym.onMouseWheel = function(delta) {
if (speed<50) {
speed = 50;
} else if (speed>500) {
speed = 500;
} else {
_root.speed += delta*5;
}
};
Mouse.addListener(mym);
//建立一个监听鼠标滚轮事件的监听器。
};[/code] 影片的数据处理数据
[code]_root.onEnterFrame = function() {
for (var i = 0; i<25; i++) {
with (a[i].pos) {
x += speed;
y += (_root._xmouse-200)/50;
z -= (_root._ymouse-200)/50;
}
//雪花的移动跟随鼠标偏移
if (a[i].pos.x>d-200) {
a[i] = new Snow(-2000, random(q)-w, random(q)-w, i);
}
//如果雪花超出范围则重新刷新位置
a[i].update(d);
//雪花的位置更新
}
_root.sp = "Speed="+speed;
这个是在舞台上建立一个文本框来显示即时速度
};[/code] 基本上把所有代码复制到Flash里面就可以了,执行速度还是很快的。
下次发一些稍微复杂点的应用。 期待ing………………………………:P [quote]Originally posted by [i]风中落叶[/i] at 2005-10-16 11:27:
期待ing………………………………:P [/quote]
有没有做出来啊? [quote]Originally posted by [i]紫色流星[/i] at 2005-10-16 07:48 PM:
有没有做出来啊? [/quote]
做是做了
正在研究那些代码呢:P [quote]Originally posted by [i]风中落叶[/i] at 2005-10-16 20:30:
做是做了
正在研究那些代码呢:P [/quote]
有疑问的话我尽可能解答:P [quote]Originally posted by [i]紫色流星[/i] at 2005-10-17 02:10 PM:
有疑问的话我尽可能解答:P [/quote]
一定会的
谢谢先:P:handshake 我也来学习。。。。。
好东西~~~~~` 呵呵~还得谢谢楼上两位的支持 8客气~期待新的讲座 [quote]Originally posted by [i]戈薇[/i] at 2005-10-21 21:59:
8客气~期待新的讲座 [/quote]
这几天忙着编写俄罗斯方块呢,过几天在传新作吧
页:
[1]
2