AS3 学习零碎笔记1

1: 兩個數類型不同時,比較時會自動轉換為相同的類型再比較

        trace(5==6);  //false                trace(6==6);  //true          trace(6=="6")    //true            trace(5=="6")    //false

        在關掉FB工程的強類型檢測后,上面代碼可以編譯通過,否則會引起一些隱蔽錯誤,不建議這樣寫。

2:var   quantity:Number=15-"rabbits";   (注意:C#裏面是不允許這樣附值的,所以有所不同)

      trace(typeof quantity);                          //顯示"number"

      上面代碼,其實quantity是NaN(無效數字的常數),但它的類型仍為Number,所以,為了測試某個number變量是不合法的,要使用isNaN

       if(!isNaN(quantity)) {trace"That is a valid number.";}

3:AS的基本數據類型:string,number,Boolean;復合類型:object,sprite,array。比較基本類型的時候是比較它們的值,比較復合類型的時候,是比較他們的引用。

4:AS的for循環竟然可以這麽寫 ,C#裏就不行了

       for(var i:int=0,j:int=10;i<10;i++,j--)  {trace("i is"+i);  trace("j is"+j);}

5:當函數的參數不確定的時候,可以使用内建數組,寫法如下:

      private function average():Number{

            var sum:Number = 0;

           for(var i:int=0;i<arguments.length:i++) {sum += arguments[i];}

           return sum/arguments.length;

      }

      調用的時候就可以使用任意數量的參數: var average:Number = average(1,2,5,10,8,20);

 6:AS3類的屬性,使用隱式getter和setter方法:

 

package
{
        
public class Counter{
               
private var _count:uint;
               
public function Counter(){
                       _count 
= 0;
               }

               
               
public function get count():uint{
                       
return _count;
               }


               
public function set count(value:uint):void{
                        _count 
= value;
               }

        }

}




// 調用 counter為Counter實例
counter.count  =   5 ;
trace(counter.count);

 

7:對數字進行格式化輸出:如6小時3分鐘,顯示6:03或06:03,可以使用NumberFormat自定義類,該類可以到

      http://rightactionscript.com/ascb/   下載

8:AS的數組並不像其他語言,它並不關心存的是什麽類型的數據:

      var data:Array = ["a",2,true,new Object()];

      AS數組還有個很有趣的地方是,它可以使用join()函數將數組輸出成字符串,儅我們直接輸出數組的時候系統會自動調用轉換函數:

      var letters:Array = ["a","b","c"];             trace(letters);   //輸出    a,b,c

9:AS3引入無類型變量概念:var someObj:*;              無類型變量與Object類型的變量不同,二者的主要區別在於無類型變量可以保存特殊值undefined,而Object類型的變量則不可以保存這個特殊值

10:在嚴格模式下,也可以選擇不在賦值語句右側指定類型,從而退出編譯時類型檢查

 

function dynamicTest(xParam)
{
        
if(xParam is String)
        
{ var myStr:String = xParam;  trace("String:  "+ myStr);}
        
else if (xParam is Number)
        
{var myNum : Number = xParam; trace("Number: "+ myNum);}
}


調用:dynamicTest(
100 )        or           dynamicTest( " one Hundred " )

 11.對於之前寫慣C#和Java的來説,AS3有些地方實在讓人很不習慣— —|||
   (1)AS3不但允許在類体中包括定義,而且還允許包括這樣的語句。
             class SampleClass { trace("Class Created");}
     (2)  AS3中允許在同一類体中定義同明的靜態屬性和實例屬性。
            class StaticTest
            {
                  static var message:String = "Static variable";
                  var message:String = "instance variable";
            }
    (3)   AS3並不支持具體的枚舉工具,不過可以使用類或靜態常量來創建枚舉,還可以加入final修飾
            public final class PrintJobOrientation
            {
                  public static const LANDSCAPE:String = "landscpe";
                  public static const PORTRAIT:String = "portrait";
            }

12:Display List

      每一個.swf文件都包含一個 display list,display list用於分層的裝載所有可視對象。它包含三個元素:

      舞臺:是display list 的第一層,也是唯一裝載.swf主程序的地方。

      容器:其實舞臺也是一個容器,容器可以嵌套,舞臺下可以包含其它的容器,例如Sprite、MovieClip和Shape.當從display list中刪除某一個容器的時候,該容器下的所有孩子對象都將被刪除。

      可視元素:(為避免與類概念的實例區分開來,這裡不用對象這個字眼,對於沒有面向對象思想的as1的flash程序員來説可能有用)其實就是可視類,界面類,UI類云云,這些類可以是一個容器同時也是可視元素,例如MovieClip,而一些類僅僅是可視元素例如TextField,可視元素只有放在容器裏面才可以被顯示出來。

      使用Display List這种新的現實模式的好處:

      (1). 提高程序性能:除了MovieClip,還有更多輕量級的界面類,例如Sprite、Shape等等,使用他們可以減少内存及CPU的耗損

      (2). 更簡單的深度管理:在新的顯示模型裏面,深度管理幾乎自動化

      (3). 沒有那麽多死板的結構: 以前的版本如果要改變層級結構,就需要把MovieClips釋放並重構,新模型擁有更優秀的層級結構,更易于更改。

      (4). 可視元素的創建更加方便:在新的顯示模式下,其實是用了類的概念,你可以繼承任意Display object類及其子類,創建自定義的可視類,然後在容器裏面創建該類的實例(對象)。

 13. 顯示容器使用removeChild()和removeChildAt()方法並不完全刪除顯示元素的實例,這兩种方法只是從容器的子級列表中刪除實例,該實例仍可由另一個變量引用,需用delete才能完全刪除,暈,一不小心,就浪費資源了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值