Flash AS教程:旋转立方体

作者:网络 来源:佚名 更新时间:2008-01-06 23:32:53 点击:

好,下面开始:
 

stop();
//这个stop是让flash播放在这一帧停下来,但对代码的运行没有影响~其实不用也没关系
angle=-0.03;
dot_x=stage.width/2;
dot_y=stage.height/2;
p=70;
d=300;
//先初始化一下变量~angle是立方体每次转过的角度,dot_x和dot_y定义了空间的原点,p是立方体边长的一半,d是眼
//睛距离屏幕的像素
sx=new array(-p,p,p,-p,-p,p,p,-p);
sy=new array(-p,-p,-p,-p,p,p,p,p);
sz=new array(-p,-p,p,p,-p,-p,p,p);
//这三个数组储存了立方体八个点的实际坐标
tempx=new array(8);
tempy=new array(8);
//这两个数组用来存储立方体8个点在屏幕上的坐标
function r(){
for(i=0;i temp_x=sx*math.cos(angle)-sz*math.sin(angle);
temp_z=sx*math.sin(angle)+sz*math.cos(angle);
//这个是用来计算立方体在转动时八个点的坐标
sx=temp_x;
sy=sy;
sz=temp_z;
//要这样赋值一下~否则立方体会越转越长
tempx=(sx/(sz+d))*d+dot_x;
tempy=(sy/(sz+d))*d+dot_y;
//这个是用来将立方体的实际坐标转化成屏幕的坐标,不懂的可以参考一下计算机图形学的书

}
_root.createemptymovieclip("lines", 1);
lines.linestyle(1, 11111111, 100);
lines.moveto(tempx[0],tempy[0]);
lines.lineto(tempx[1],tempy[1]);
lines.lineto(tempx[2],tempy[2]);
lines.lineto(tempx[3],tempy[3]);
lines.lineto(tempx[0],tempy[0]);
lines.lineto(tempx[4],tempy[4]);
lines.lineto(tempx[5],tempy[5]);
lines.lineto(tempx[6],tempy[6]);
lines.lineto(tempx[7],tempy[7]);
lines.lineto(tempx[4],tempy[4]);
lines.moveto(tempx[1],tempy[1]);
lines.lineto(tempx[5],tempy[5]);
lines.moveto(tempx[2],tempy[2]);
lines.lineto(tempx[6],tempy[6]);
lines.moveto(tempx[3],tempy[3]);
lines.lineto(tempx[7],tempy[7]);
_root.removemovieclip("lines");
//上面的这一堆东西是用来把算出来的立方体的点用线连起来~其实可以优化一下的
updateafterevent();
//更新一下
}
setinterval(r,5);
//每隔5毫秒运行一次函数r()

终于写完了哈

" /> 写的不好~请见谅`~再发一次效果,嘿嘿