當前位置:編程學習大全網 - 腳本源碼 - Adobe Flash CS4方塊形狀的動畫特效制作

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

在本教程中我們將會看到的是如何用adobe flash cs4制作壹個方塊形狀的動畫特效的制作過程!

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

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

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

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

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 lt; 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);

}

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

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

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

addEventListener(Event.ENTER_FRAME, enterFrameHandler);

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

function enterFrameHandler(e:Event):void {

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

//將box變為局部變量

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

//減少深度

box.zpos3D-=5;

if (box.zpos3Dlt;=- 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 lt; NUMBER_OF_BOXES; i++) {

setChildIndex(boxes[i], i);

}

}

  • 上一篇:廣州和壹自動化設備有限公司怎麽樣?
  • 下一篇:學習VB的感受和體會
  • copyright 2024編程學習大全網