如何用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);

  }

  }

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

相关文章:

你感兴趣的文章:

标签云: