ActionScript3.0 基礎知識

來源:互聯網
上載者:User
(一)--變數 看了幾天的官方語言指南,對ActionScript3.0(以下簡稱as3.0)的變數有了一些瞭解,和大夥分享一下。
   as3.0對變數的聲明有了要求,要指明變數的類型(這也是寫程式應該遵守的法則),具體看下面的例子:


        1.聲明方式
          (1)actionscript
               i;    //這樣聲明方式是錯誤的
               var i; //這樣的聲明方式在as3.0中也是不推薦使用的
          (2)actionscript3.0
              var i:String;    //聲明
              i="helloWorld!"; //賦初始值

        2.聲明並賦初始值
           var i:String="helloworld";

        3.多個變數聲明
           var i:int,a:String,b:Number;

        4.多個變數聲明並賦初始值
            var i:int=2,a:String="nihao",b:Number=4;
   

    這回關於變數的範圍沒有變化

        1.全域變數的聲明
            var str:String="World";
             function fun(){
                 trace(str);     //輸出: World
             }
             fun()
             trace(str)         //輸出: World

         2.局部變數的聲明
             function fun(){
                var str:String="World";
                trace(str);      //輸出: World
             }
             trace(str)          // 錯誤:str不能確定範圍

         3.全域變數和局部變數相互關係
              var str1:String="World";
              function fun(){
                   var str1:String="local";
                   trace(str1);      //輸出: local
               }
              trace(str1)            //輸出: World

    關於變數的資料類型和預設值,看下面
       
 資料類型  預設值
 Boolean  false
 int  0
 Number  NaN
 Object  null
 String  null
 uint  0
 無宣告類型  undefined
 所有的其他類(包括使用者自己的類)  undefined
   

    以上是小弟的淺見,有什麼不好的地方多指教,關於變數的使用先說到這,如果大家有關於as3.0方面不同意見,請大家留言,一起學習進步。最後,祝大家在程式享受快樂。

 (二)--包

包(Package)是ActionScript3.0(以下簡稱as3.0)中新概念,在以前的as版本中,也有方法使用"包"的方法,請看下面的例子:
       class com.ly.TestClass{
             public var string:String;
             public function fun(){
              
             }
             代碼....
        }
這樣的方法在以前是經常用到的,寫過類的朋友應該深有體會。在類名前面寫上類的路徑,然後放在類路徑裡,最後在flash中調用。as3.0更改了以前的類路徑用法,增添關鍵字Package,如果大家熟悉java的話,應該很對這個關鍵字的使用方法有所體會,在flash中使用方法和java大致相同,請看下面的例子:
       Package com{
         public class TestClass{
             public var string:String;
             public function fun(){
             }
       }
包內可以建立多個類,請看下面的例子:
       Package com{
          class classTestClass{}
          class classTestClass1{}
          class classTestClass2{}
       }
匯入類包的方法是使用關鍵字Import,請看下面的例子:
       1.建立類包
       //建立類包
       Package com{
          public class classTest{
          }
          class classBox{}
       }
       2.匯入類包
       Import com.*;
       var mytest:classTest=new classTest();  //正確: classTest是                                                         public
       var mybox:classBox=new classBox();     //錯誤:classBox是
                                                     private*
          *NOTE:包的內部預設類型private


(三)--namespace(名稱空間) nampspace (名稱空間)是ActionScript3.0(以下簡稱as3.0)新的關鍵字,在一些先前的介紹中,說他很想C#中的名稱空間,其實它和C#的使用方法有很大的不同。如果,非要說它和某個語言中方法相似的話,應該是xml。xml有名稱空間聲明和使用,想瞭解xml名稱空間的使用可以在網上找些相關的資料,參考一下。
   1.聲明並使用名稱空間的方法,請看下面的例子:
       (1)申請名稱空間
             namesspace testname;
       (2)用你所申請的名稱空間來定義要被使用的方法和屬性
             testname function fun(){
             }
       (3)使用名稱空間,有兩種方法:
             use namespace testname;
             fun();
             /*--第二種--*/
             testname::fun();
     通過以上的例子,可以申請並使用自己的名稱空間。
    
     以上是關於namespace基本用法,名稱空間還有其他的用法,我會繼續更新的。 (四)--迴圈 ActionScript3.0中新添加了一個for each...in語句,迴圈中其他的變化基本上沒有,雖然沒有什麼變化,還是將他寫出來,以便初學as的朋友有所借鑒。
  言歸正傳,下面開始介紹迴圈的變化:
  (1)for語句
       它的用法和以前沒有變化
          var i=0;
          for(i=0;i<5;i++){
             trace(i);    //迴圈輸出i值
          }
  (2) while語句
       它的用法也無變化, 只是要甚用,易出現死迴圈
          var i=0;
          while(i<5){
             trace(i)       //迴圈輸出i值;
             i++;
          }
  (3) do..while語句
       它的用法也無變化,迴圈一次,在進行判斷
          var i=5;
          do{
                trace(i)    //迴圈輸出i=5值;
                i++;
          } while(i<5);
  (4) for...in語句
       迴圈輸出對象中的屬性值( 不包括方法),數組中的元素。
             對象迴圈
             var object:Object={x:20;y:30};
             for(var i:String in object){
                   trace(i+":"+object[i])
             }
              //輸出
              //x:20
              //x:30
             數組迴圈
             var array:Array=["one","two","three"];
             for(var i:String in array){
                   trace(array[i])
             }
             //輸出
             //one
             //two
             //three
   (5) for each...in語句
      as3.0中新添加的語句,和for..in有些相同,不同的是for each...in的變數包含值並通過屬性替換屬性名稱
             var object:Object={x:20,y:30}
             for each(var i in object){
                trace(i)
             }
             //輸出  
             //20
             //30
       你也能構重複迴圈XML或者XMLLIST對象,請看下面的例子
             var myxml:XML=<users>
                       <fname>Jackal</fname>
                       <fname>krean</fname>
                       <fname>playboy</fname>
                       </users>;
             for each(var item in myxml.users){
                   trace(item)
             }
             //輸出
             //Jackal
             //krean
             //playboy
        它也允許你迴圈數組中的元素,請看下面的例子
             var array:Array=["one","two","three"];
             for each(var i in array){
                   trace(i);
             }
             //輸出
             //one
             //two
             //three
    以上關於迴圈在ActionScript3.0中的變化,還有添加語句,如果有需要開進的請大家不要吝惜打字,多提意見。
(五)--資料類型檢查 (一)資料類型
   一個資料類型聲明是有初始值的,例如,Boolean有兩個初始值:true和false。as3.0中比較常用的資料類型,有String,Number和Array。你也可以通過使用自己寫的類和介面聲明所需要的資料類型。
   在actionscript3.0中,初始化值和對象聲明值,FlashPlay都認為他們同屬一個類型
 ,請看下面的例子:
     var otherInt:int=3;
     var otherInt:int=new int(3);
注釋:關於初始化值和對象聲明值在flashplay是否相同有待研究
  1.程式設計類型檢查
      在程式編寫中,要明確傳遞變數值的類型和接受參數類型相同,請看下面的例子,參數
mystring的類型必須要和傳進來相同:
        function fun(mystring:String){
                trace(mystring)
        }
        var string:String="hello";
        fun(string)
      在strict 模式中,ActionScript編譯報告類型錯位並編譯異常。請看下面的例子,在下面的代碼中在函數中聲明一個物件類型的參數,但是後來又將這個參數付給了字串和數字型,在安全模式中將產生一個編譯錯誤:
        fucntion DynamicTest(varx: Object ){
             if(varx is String ){
                var string: String =varx;  // 在安全模式中將產生一個編譯錯誤
                trace("String"+string);
             }else if(varx is Number){
                var number: Number =varx;  // 在安全模式中將產生一個編譯錯誤
                trace("Nubmer"+number);
             }
        }  
      當然,在安全模式中不可以,你也能夠使用其他的方法。在函數參數聲明中可以讓參數適應所有的資料類型,請看下面的例子:
       fucntion fun(varx){
             if(varx is String ){
                var string: String =varx;
                trace("String"+string);
             }else if(varx is Number){
                var number: Number =varx;
                trace("Nubmer"+number);
             }
        }
        fun(100);
        fun("hello");
   2.已耗用時間檢查
     在普通模式中,FlashPlayer同樣也有嚴格要求,請看下面的例子,在函數fun中參數接受了一個值3,因為參數的型別宣告是一個(Array),即使運行在普通模式中也會報錯:


        function fun(mycan: Array ){


             trace(mycan)


        }


        var myNum:Number=3;


        fun(myNum)    / /在普通模式中將產生一個編譯錯誤
      如果將myNum不限制類型,在普通模式中也會報錯的,請看下面的例子:
         function fun(mycan:Array){


             trace(mycan)


        }


        var myNum=3;


        fun(myNum)    / /在普通模式中將產生一個編譯錯誤
(二)1. is操作符
       is操作符在actionscript3.0中是新添加的,用來測試對象是不是和這個類或介面有繼承關係,請看下面的例子:
          var mySprite:Sprite=new Sprite();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.