您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Flex3如何將AS2轉化成AS3”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Flex3如何將AS2轉化成AS3”這篇文章吧。
Flex3教程 AS2轉化成AS3的方法(Method)
AS2和AS3差異點介紹:
AS3的方法修飾符在AS2的基礎上增加了protected,internal,final和override,并且private的語義有變化。無返回的關鍵字Void變成了void。方法參數的設定也有一些變化。
private關鍵字修飾后代表此方法只能被本類訪問。這變得和Java語言一樣了。而在AS2中,private相當于下面要說的AS3的protected。
protected關鍵字修飾后代表此方法只能被自己和自己的子類訪問,這和Java語言的protected關鍵字意義一樣,學過Java的朋友應該很熟悉。
internal關鍵字修飾后代表此方法只能被同一包里的類訪問,這和Java語言的缺省方法權限也一樣。
final關鍵字修飾后代表此方法不能被覆蓋。同樣,和Java語言也是一樣的。
Flex3教程中override關鍵字修飾那些覆蓋父類方法的方法,C#程序員可能非常熟悉這個關鍵字,但是Java程序員可能有些不太理解,覆蓋……還需要關鍵字?我這里講一個我以前在Java&AS2時代遇到的麻煩,有一次,我寫一個Text組件,繼承自JSDK的JTextComponent類,我這個組件功能比較多,因此方法也比較多,其中有一個方法名叫updateText(具體名字我忘記了,這里隨便用一個)。這個組件雖然功能多,但是都很簡單,邏輯也很清晰,但是始終會發生很奇怪的錯誤,反復檢查了三千七百八十六遍代碼,還是找不到錯誤。***你猜錯誤在什么地方?就在updateText這里,原來JTextComponent也有這個方法,我又寫了同名的這個方法,因此就錯誤地覆蓋了JTextComponent的那個方法,當然,不能正常工作了。你想想,要是覆蓋的方法都必須加上override關鍵字才能編譯通過,那么我在編譯的時候就會知道這里不該用這個名字了,也就不會浪費那么多時間了。簡單總結就是:override必須出現在覆蓋父類方法的方法前面,以避免無意的錯誤覆蓋。
◆override必須出現在protected,internal,public的前面。按照邏輯,你可以分析知道override不能出現在private和final的前面。
Void變成了void,這個只是字符變了,語義沒有變,查找替換即可。
Flex3教程中參數設置方面,變化的主要有:
參數數量嚴格檢查,在AS2中,方法申明中如果有n(n>=0)個參數,在調用的時候,可以傳x(x>=0)個參數,當xn的時候,多于的參數則被忽略,也就是說,傳入的參數個數可以不跟申明的個數一致。而在AS3中,則必須一致。
參數缺省值設定,在AS3中可以有這種用法,申明functionmethod(x:int=1,y:int=2),調用時method()代表method(1,2),method(x)代表method(x,2)。這和C++語言是一樣的,熟悉C++的朋友可以跳過這一段了。也就說,缺省參數可以讓調用的時候少傳入一些參數,沒有傳入的參數被缺省值代替。注意缺省參數必須是從后往左連續的,也就是說所有的缺省參數必須在必備參數的后面。這樣的用法method(param1:int,param2:String=””,param3:Number=6)可以,而method(param1:int=1,param2:String=””,param3:Number)不可以。
任意數量參數,為了實現任意數量參數的方法,AS3增加了一種模式,method(…args)模式,
…args(args可以是任意合法變量名)代表一個數組,你可以通過遍歷數組的方式得到args內所有參數。注意…args必須是***一個參數,即是說method(param:int,…args)合法,而method(…args,param:int)不合法。使用例子:
package{ importflash.display.MovieClip; publicclassRestParamExampleextendsMovieClip{ publicfunctionRestParamExample(){ traceParams(100,130,"two");//Output:100,130,two trace(average(4,7,13));//Output:8 } } } functiontraceParams(...rest){ trace(rest); } functionaverage(...args):Number{ varsum:Number=0; for(vari:uint=0;i<args.length;i++){ sum+=args[i]; } return(sum/args.length); }
以上是“Flex3如何將AS2轉化成AS3”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。