国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Flash > 正文

[FLASH基礎教程合集一]方塊動畫特效制作

2020-01-28 14:01:22
字體:
來源:轉載
供稿:網友

  效果如下:

Flash方塊動畫特效制作

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

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

Flash方塊動畫特效制作2

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

Flash方塊動畫特效制作3

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

  }

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

Flash方塊動畫特效制作7

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

   }

  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普定县| 平泉县| 扎鲁特旗| 崇礼县| 兴山县| 阿尔山市| 新乐市| 元谋县| 九江市| 社旗县| 灌南县| 会泽县| 四子王旗| 兴隆县| 安徽省| 宁远县| 江门市| 沈丘县| 遵义县| 阿坝县| 丹棱县| 清新县| 青州市| 阿荣旗| 忻城县| 塔河县| 安岳县| 民乐县| 香格里拉县| 中牟县| 西宁市| 焦作市| 安乡县| 永平县| 泸溪县| 紫云| 安阳市| 龙陵县| 府谷县| 达孜县| 连江县|