<button id="ptu4h"><acronym id="ptu4h"><input id="ptu4h"></input></acronym></button>

<tbody id="ptu4h"></tbody>

    <dd id="ptu4h"><center id="ptu4h"></center></dd><dd id="ptu4h"></dd><dd id="ptu4h"><track id="ptu4h"><video id="ptu4h"></video></track></dd>
  • 16素材
    您現在的位置:首頁 > 教程中心 > Flash教程

    Flash as3教程:13個常用小技巧

    Webjx核心提示:Flash as3 常用小技巧.

     

    1:String轉換成Boolean

    1 var s:String="true";
    2 var b:Boolean = (s=="true");

    2:清除所有子對象
    1  while(container.numChildren > 0)
    2  {
    3      container.removeChildAt(0);
    4  }

    3:對于不需要 鼠標交互的對象 設置屬性 mouseChildren , mouseEnabled。

    4: 盡可能使用 Vector 類而不是 Array 類,Vector 類的讀寫訪問速度比 Array 類快。

    5:通過為矢量分配特定長度并將其長度設為固定值,可進一步優化。

     

    1     // Specify a fixed length and initialize its length
    2 var coordinates:Vector.<Number> = new Vector.<Number>(300000, true); 3 var started:Number = getTimer(); 4 for (var i:int = 0; i< 300000; i++) 5 { 6 coordinates[i] = Math.random()*1024; 7 } 8 trace(getTimer() - started); 9 // output: 48

    6:將重用的值存儲在常量,可對上面實例進一步優化。

     

     1     // Store the reused value to maintain code easily
    2 const MAX_NUM:int = 300000; 3 var coordinates:Vector.<Number> = new Vector.<Number>(MAX_NUM, true); 4 var started:Number = getTimer(); 5 for (var i:int = 0; i< MAX_NUM; i++) 6 { 7 coordinates[i] = Math.random()*1024; 8 } 9 trace(getTimer() - started); 10 // output: 47

    7:使用BitmapData的 lock() 和 unlock() 方法加快運行速度。

    8:對于 TextField 對象,請使用 appendText() 方法,而不要使用 += 運算符。

    9: 使用中括號運算符可能會降低性能。將您的引用存儲在本地變量中可避免使用該運算符。以下代碼示例演示了使用中括號運算
    符的效率很低:

     

     1 var lng:int = 5000;
     2 var arraySprite:Vector.<Sprite> = new Vector.<Sprite>(lng, true);
     3 var i:int;
     4 for ( i = 0; i< lng; i++ )
     5 {
     6 arraySprite[i] = new Sprite();
     7 }
     8 var started:Number = getTimer();
     9 for ( i = 0; i< lng; i++ )
    10 {
    11 arraySprite[i].x = Math.random()*stage.stageWidth;
    12 arraySprite[i].y = Math.random()*stage.stageHeight;
    13 arraySprite[i].alpha = Math.random();
    14 arraySprite[i].rotation = Math.random()*360;
    15 }
    16 trace( getTimer() - started );
    17 // output : 16

    以下優化的版本減少了對中括號運算符的使用:

     1 var lng:int = 5000;
     2 var arraySprite:Vector.<Sprite> = new Vector.<Sprite>(lng, true);
     3 var i:int;
     4 for ( i = 0; i< lng; i++ )
     5 {
     6 arraySprite[i] = new Sprite();
     7 }
     8 var started:Number = getTimer();
     9 var currentSprite:Sprite;
    10 for ( i = 0; i< lng; i++ )
    11 {
    12 currentSprite = arraySprite[i];
    13 currentSprite.x = Math.random()*stage.stageWidth;
    14 currentSprite.y = Math.random()*stage.stageHeight;
    15 currentSprite.alpha = Math.random();
    16 currentSprite.rotation = Math.random()*360;
    17 }
    18 trace( getTimer() - started );
    19 // output : 9

    10: 盡可能使用內聯代碼以減少代碼中函數的調用次數。例如:

    1 currentValue > 0 ? currentValue : -currentValue;

     

    比下面這種快

     

    1 Math.abs ( currentValue );   

     

    11:避免計算循環中的語句。

    不計算循環中的語句也可實現優化。以下代碼遍歷數組,但未進行優化,因為在每次遍歷時都需要計算數組長度:

     

    1 for (var i:int = 0; i< myArray.length; i++)
    2 {
    3 }

    最好存儲該值并重復使用:
    1 var lng:int = myArray.length;
    2 for (var i:int = 0; i< lng; i++)
    3 {
    4 }

    12:對 while 循環使用相反的順序。

     

    以相反順序進行 while 循環的速度比正向循環快:

     

    1 var i:int = myArray.length;
    2 while (--i > -1)
    3 {
    4 }

    13:通常,使用盡可能低的幀速率可以提高性能。
    關鍵詞:

    相關素材

    聯系客服 加入QQ群
    素材中国