as3 變量和數據類型

這部分與c++java的數據類型差不多。需要注意的地方列舉如下。

1.       as3 包括標準模式和嚴格模式。默認是嚴格編譯模式。也就是有“預編譯”,而不是運行時才做檢查。

靜態類型語言(如 C++ Java)在編譯時執行類型檢查。動態類型語言(如 jsSmalltalk Python)在運行時執行類型檢查。ActionScript 3.0

其實是動態類型的語言,它在運行時執行類型檢查,但是它也支持在“嚴格模式”的特殊編譯器模式下在編譯時執行類型檢查。在嚴格模式下,類型檢查既

發生在編譯時也發生在運行時,但是在標準模式下,類型檢查僅發生在運行時。

例如:

var mytype;  //在嚴格模式下將產生編譯器警告,在運行模式則不提示

var mytype:int ; //兩個模式下都沒有問題。

也就是說,as3希望你定義變量時最好要指定數據類型。

按理說一個動態語言,靈活性強是它的優點,他偏偏要費事搞個嚴格模式,小瀋陽說,這是爲什麼呢?

考慮下我們熟悉的JavaScriptjava(或者c#,c++)的區別,我們很容易得出下面的結論:

在構造代碼時,動態類型的語言帶來了極大的靈活性,但代價是在運行時可能出現類型錯誤。靜態類型的語言在編譯時報告類型錯誤,但代價是要求類型信息在編譯時是已知的。在較大的項目中通常建議使用編譯時類型檢查,因爲隨着項目變大,相對於儘早捕獲類型錯誤,數據類型的靈活性通常會變得不那麼重要。很顯然,Adobe公司爲了向世人證明flex是適合做大型項目開發的,而拋棄了原來動態語言的“弱類型”,希望你用“強類型”來寫效率高的大型程序。

2.       int Number類型

int 標識-231 231-1之間的整數

Number ,官方文檔是這麼說的:在 ActionScript 3.0 中,Number 數據類型可以表示整數、無符號整數和浮點數。但是,爲

了儘可能提高性能,應將 Number 數據類型僅用於浮點數。

3.       void 數據類型,僅包含一個值:undefined

4.       Object 類型:

ActionScript 3.0 中的 Object 數據類型與早期版本中的 Object 數據類型存在以下三方面的區別:第一,Object 數據類型不再是指定給沒有類型註釋的變量的默認數據類型。第二, Object 數據類型不再包括 undefined 這一值,該值以前是 Object 實例的默認值。第三,在 ActionScript 3.0 中, Object 類實例的默認值是 null

var x:Object;  //object類型,默認null

var x  ;//無類型變量,默認undefined

var x:* ;//無類型變量,默認undefined,同var x;

5.       is as

as3新增了isas預算符。(這也是向傳統的OO語言學習)

is運算符:返回true或者false,來檢查對象是否爲特定類的實例,而且還可以檢查對象是否是用來實現特定接口的類的實例:

var mySprite:Sprite = new Sprite();

trace(mySprite is Sprite); // true

trace(mySprite is DisplayObject); // true

trace(mySprite is IEventDispatcher); // true

注意:在早期的 ActionScript 版本中,此功能由 instanceof 運算符提供。但在ActionScript 3.0 中,不應使用 instanceof 運算符來測試變量或表達式是否爲數據類型的成員。對於手動類型檢查,應用 is 運算符來代替 instanceof 運算符,因爲表達式 x instanceof y 只是在 x 的原型鏈中檢查 y 是否存在(在 ActionScript 3.0 中,原型鏈不能全面地描述繼承層次結構)。

as運算符:也可用來檢查表達式是否爲給定數據類型的成員。但是,與 is 運算符不同的是,as 運算符不返回布爾值,而是返回表達式的值

var mySprite:Sprite = new Sprite();

trace(mySprite as Sprite); // [Sprite 對象]

trace(mySprite as DisplayObject); // [Sprite 對象]

trace(mySprite as IEventDispatcher); // [Sprite 對象]

trace(mySprite as Number); // null

6.       常量,ActionScript 3.0 支持 const 語句,該語句可用來創建常量。常量是指具有無法改變的固定值的屬性。(還是向傳統OO學習)

Flash Player API 定義了一組廣泛的常量供您使用。按照慣例,ActionScript 中的常量全部使用大寫字母,各個單詞之間用下劃線字符 (_) 分隔。例如,MouseEvent 類定義將此命名慣例用於其常量,其中每個常量都表示一個與鼠標輸入有關的事件:

package flash.events

{

public class MouseEvent extends Event

{

public static const CLICK:String = "click";

public static const DOUBLE_CLICK:String = "doubleClick";

public static const MOUSE_DOWN:String = "mouseDown";

public static const MOUSE_MOVE:String = "mouseMove";

...

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章