天天看點

不倫不類的Action Script 3.0

因工作需要,有可能要接手以前一位Flash程式員同僚的代碼,今天看了下Action Script 3.0,發現這玩意兒真的有點那個啥...

打開Flash CS 4,建立一個Action Script3.0檔案,在第一幀寫幾行代碼:

代碼一:

好象還不錯,有點c#3.0中的var的味道,能根據指派不同,自動推斷變量類型.

再寫幾行過過瘾:

代碼二:

輸出:

i=0,類型:number,元素:上海

i=1,類型:number,元素:北京

i=2,類型:number,元素:武漢

i=3,類型:number,元素:廣州

i=4,類型:number,元素:深圳

貌似也象那麼回事兒,跟c#中的也差不多,i做為數組的數字下标進行元素通路(比如:Citys[1])

改成(即把循環變量的類型明确定義成String):

代碼三:

for(var j:String in Citys){

 trace("j=" + j + ",類型:" + typeof(j) + ",元素:" + Citys[j]) 

}

j=0,類型:string,元素:上海

j=1,類型:string,元素:北京

j=2,類型:string,元素:武漢

j=3,類型:string,元素:廣州

j=4,類型:string,元素:深圳

這個看上去就特别扭了,你說要是解釋成索引器重載吧(即Citys["1"]),那j輸出的值貌似是"1"更合理,而輸出結果是1(不加引号,誤導初學者)

而根據第二段的測試結果,循環變量預設就是number,那我們改成這樣試下:

for(var k:Number in Citys){

 trace("類型:" + typeof(k) + ",元素:" + Citys[k]) 

諷刺的是居然編譯不過了!(明明在代碼二中系統自動推斷出是number型,現在我順着它的系統定義成Number型卻不能編譯)

也許是我道行太淺,了解不了Adobe的玄機。

作者:菩提樹下的楊過