Posted on 2009-05-20 15:18
errorfun 閱讀(1213)
評論(0) 編輯 收藏 所屬分類:
Flex
每一種編程語言都提供強制類型轉換,允許你將某一種數據類型轉換成另一種數據類型,AS3自然也不例外。但是雖然我編寫了不少Flex程序,對AS3中的強制類型轉換還是不太清楚,以前AS中是這樣進行強制類型轉換的:假設有一個類叫做Class1,我們聲明了一個它的對象 c1,如果想要將它轉換成Class2類型,只要這樣寫:
Class2(c1);
在AS3中你依然可以這樣寫,但是AS3 中提供了一個新的操作符: as ,并且推薦使用as 進行強制轉換,上述的例子用 as 操作符實現就是這樣:
c1 as Class2;
使用 as 操作符有幾個好處:
1.它的效果和第一種方法是一樣的。
2.如果類型不兼容無法轉換,就會返回null,而不是出錯。這樣你就可以自定義錯誤的時候該做什么。
3.沒有運行時錯誤(Run Time Error)提示。
不過有些時候我在使用 as 的時候并不能達到強制轉換的目的,而使用第一種方法則可以。為什么 as 操作符有時候會不好用呢?這個問題困擾了我很久,知道昨天在MXNA上發現了一篇日志,才恍然大悟:原來在AS3.0類庫中最高層類(Top Level classes,所有Top Level classes的列表請看這里)之間進行強制轉換時, as 操作符是不起作用的。比如,假如你想要將一個String 類型的字符串 str 轉換成 Number 類型的數字 num 時,可能想要這樣寫:
num = str as Number;
這樣寫是沒有用的,你只能通過第一種方法來達到強制轉換的目的:
num = Number(str);
特別感謝raghuonflex對此做了說明,也希望這些對學習Flex的人有些提示。
注:以上技巧我只在Flex 中驗證過,本人對Flash一竅不通,不保證也適用于 Flash中的 AS3.0 。