萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> Flash CS4方塊形狀的動畫特效制作

Flash CS4方塊形狀的動畫特效制作

  1.新建一個flash Actionscript 3 大小為500×300px,背景黑色。

  2.在場景裡,使用矩形工具(G),設置邊框寬3px;畫一個正方形大小個40×40px;

Flash CS4方塊形狀的動畫特效制作 三聯教程

  3.將這個正方形上點右鍵,轉換元件(為電影剪輯);注冊設置為中心;

Adobe Flash CS4方塊形狀的動畫特效制作

  4.選擇元件,右鍵>鏈接;設置類為MyBox;

Flash方塊動畫特效制作4

  5.回到場景中刪除正方形;新建一個Actionscript文件並輸入下面代碼:

  package {

  import flash.display.MovieClip;

  public class MyBox extends MovieClip {

  //這是方塊的3d坐標

  public var xpos3D:Number = 0;

  public var ypos3D:Number = 0;

  public var zpos3D:Number = 0;

  public function MyBox() {

  }

  }

  }

  另存為MyBox.as,注意存在flash文件的同一路徑內,

  6.返回主場景,在第一幀中插入下列代碼:

  //立體場景縱深

  const MAXIMUM_Z:Number = 500;

  //方塊數量

  const NUMBER_OF_BOXES:Number = 15;

  //創建一個包含方塊的數組;

  var boxes:Array = new Array();

  //視圖焦距設置

  var focalLength:Number = 300;

  //Vanishingpoint是方塊消失點;

  var vanishingPointX:Number = stage.stageWidth / 2;

  var vanishingPointY:Number = 20;

  //3D方塊底邊位置

  var floor:Number = 80;

  //第一個方塊深度

  var startingDepth:Number = MAXIMUM_Z;

  //盒子之間的z距離值

  var zDistance:Number = 50;

  //這個循環為由遠到近的方塊定位

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

  var box:MyBox = new MyBox();

  box.xpos3D = 0;

  box.ypos3D = floor;

  box.zpos3D = startingDepth;

  //更新方塊的深度;

  startingDepth -= zDistance;

  //使用角度公式計算縮放比例;

  var scaleRatio = 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);

  }

  在菜單中選擇調試>測試場景效果如下:

Adobe Flash CS4方塊形狀的動畫特效制作

  7.在以上代碼後插入如下代碼,用於產生動畫;

  //用ENTER_FRAME事件加入動畫函數

  addEventListener(Event.ENTER_FRAME, enterFrameHandler);

  //每一幀都調用這個函數

  function enterFrameHandler(e:Event):void {

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

  //將box變為局部變量

  var box:MyBox = (MyBox)(boxes[i]);

  //減少深度

  box.zpos3D-=5;

  if (box.zpos3D<=- focalLength) {

  //最後方塊始終在數組第一位

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

  }

  var scaleRatio = 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();

  }

  //這個函數使方塊正確排列

  function sortZ():void {

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

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

  setChildIndex(boxes[i], i);

  }

  }

copyright © 萬盛學電腦網 all rights reserved