Flash教程,用Flash AS打造转动3D小方块视觉特效
演示:
其实也不算什么教程,只是代码的解释~我尽量写的详细一些~
其实这个效果只有这些代码而已~把代码贴到第一帧就可以了~
好,下面开始:
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() |
|