Flash AS教程旋转立米体

更新时间:15-09-16 17:33 热度:433
 

好,下边着手:

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()

终于写完了哈

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