如何用FLASH制作方块动画特效?

如何用FLASH制作方块动画特效?小编今天给大家带来一个好的方法哦,大家注意看哦。

如何用FLASH制作方块动画特效?

软件推荐:英文歌曲APP下载(安卓版)语言记忆卡片-旅游圣地(ABAAPP下载(苹果版)快车下载(电脑版)

1.新建一个flashActionscript3大小为500×300px,背景黑色。

2.在场景里,使用矩形工具(G),设置边框宽3px;画一个正方形大小个40×40px;

3.将这个正方形上点右键,转换元件(为电影剪辑);注册设置为中心;

4.选择元件,右键>链接;设置类为MyBox;

5.回到场景中删除正方形;新建一个Actionscript文件并输入下面代码:

package{

importflash.display.MovieClip;

publicclassMyBoxextendsMovieClip{

//这是方块的3d坐标

publicvarxpos3D:Number=0;

publicvarypos3D:Number=0;

publicvarzpos3D:Number=0;

publicfunctionMyBox(){

}

}

}

另存为MyBox.as,注意存在flash文件的同一路径内,

6.返回主场景,在第一帧中插入下列代码:

//立体场景纵深

constMAXIMUM_Z:Number=500;

//方块数量

constNUMBER_OF_BOXES:Number=15;

//创建一个包含方块的数组;

varboxes:Array=newArray();

//视图焦距设置

varfocalLength:Number=300;

//Vanishingpoint是方块消失点;

varvanishingPointX:Number=stage.stageWidth/2;

varvanishingPointY:Number=20;

//3D方块底边位置

varfloor:Number=80;

//第一个方块深度

varstartingDepth:Number=MAXIMUM_Z;

//盒子之间的z距离值

varzDistance:Number=50;

//这个循环为由远到近的方块定位

for(vari=0;i<NUMBER_OF_BOXES;i++){

varbox:MyBox=newMyBox();

box.xpos3D=0;

box.ypos3D=floor;

box.zpos3D=startingDepth;

//更新方块的深度;

startingDepth-=zDistance;

//使用角度公式计算缩放比例;

varscaleRatio=focalLength/(focalLength+box.zpos3D);

//缩放坐标比例;

box.scaleX=box.scaleY=scaleRatio;

//将方块定位到场景中(由3d到2d转换)

box.x=vanishingPointX+box.xpos3D*scaleRatio;

box.y=vanishingPointY+box.ypos3D*scaleRatio;

//将方块放入数组

boxes.push(box);

//将方块加入场景

addChild(box);

}

在菜单中选择调试>测试场景效果如下:

7.在以上代码后插入如下代码,用于产生动画;

//用ENTER_FRAME事件加入动画函数

addEventListener(Event.ENTER_FRAME,enterFrameHandler);

//每一帧都调用这个函数

functionenterFrameHandler(e:Event):void{

for(vari=0;i<NUMBER_OF_BOXES;i++){

//将box变为局部变量

varbox:MyBox=(MyBox)(boxes[i]);

//减少深度

box.zpos3D-=5;

if(box.zpos3D<=-focalLength){

//最后方块始终在数组第一位

box.zpos3D=boxes[0].zpos3D+zDistance;

}

varscaleRatio=focalLength/(focalLength+box.zpos3D);

box.scaleX=box.scaleY=scaleRatio;

//设置透明度变量

box.alpha=scaleRatio-0.5;

box.x=vanishingPointX+box.xpos3D*scaleRatio;

box.y=vanishingPointY+box.ypos3D*scaleRatio;

}

//根据深度排列数组

sortZ();

}

//这个函数使方块正确排列

functionsortZ():void{

boxes.sortOn("zpos3D",Array.NUMERIC|Array.DESCENDING);

for(vari:uint=0;i<NUMBER_OF_BOXES;i++){

setChildIndex(boxes[i],i);

}

}