亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

ActionScipt技巧和開發中會遇到的問題

2020-07-17 13:19:40
字體:
來源:轉載
供稿:網友
英文原文:《Tips for learning ActionScript 3.0》
原文地址:http://www.adobe.com/devnet/actionscript/articles/actionscript_tips.html
譯者:Dreamer。

學習ActionScipt的一些提示
ActionScript 3.0是一種強大的面向對象語言,它為Flash Player描繪了一種新的編程模型。如果你已經對ActionScript 1.0或2.0很熟悉,那么當你使用ActionScript 3.0開發你的第一個應用程序的時候需要知道一些語言差別。
注:更多資料,請參考Flex 2.0 Language Reference中ActionScript 2.0 和ActionScript 3.0之間的不同點的列表。
為了幫助大家更容易地過渡到ActionScript 3.0,我編輯了下面的列表,其中包括技巧和你可能在開發中會遇到的普遍的問題。

為所有變量,參數和返回值聲明類型。為所有變量,參數和返回值聲明類型不是必須的,但是它被認為是最好的習慣。它將會幫助編譯器給你更多地有用的錯誤信息。它還會增強運行時的性能,因為虛擬機將會認為你事先知道你所做的工作。實際上,它是如此重要所以如果你沒有聲明我們會給出一個警告。
注意現在沒有訪問方式的聲明都默認是internal方式,而不是public。現在默認的訪問方式是internal而不是public,這就是說這個聲明只對含有這個聲明的包可見,而不是對所有代碼都可見。這一點和其它一些語言相一致,比如JAVA。因為ActionScript2.0的聲明默認為是public,這個變化將很可能造成普遍的錯誤,所以請總是在聲明前面加上訪問方式,讓你的意圖更加清楚。為了鼓勵這個好習慣,ActionScript 3.0編譯器將在沒有訪問方式聲明的時候給出一個警告。
注意類都是默認為封裝(sealed)的,也就是說不能在運行時動態地添加屬性。現在類可以是動態的(dynamic)或者封裝的(sealed)。動態(dynamic)類可以在運行時添加動態屬性;封裝(sealed)類不行。因為不需要內部哈希表來保存動態的屬性,封裝(sealed)類占用內存少,而且編譯器可以對它提供更好的錯誤反饋。Class Foo這種聲明就是封裝(sealed)的。要聲明一個動態(dynamic)類,就使用dynamic關鍵字——比如,dynamic class Foo。
使用包(package)聲明把一個類放到一個包(package)里面。Package是ActionScript 3.0中一個新的關鍵字。
ActionScript 2.0 代碼:

class mx.controls.Button { … }
ActionScript 3.0 代碼:

package mx.controls { class Button { .. } }
在ActionScript 2.0中,一個public類必須放在一個文件名和類名相同的文件中。多個類可能在同一個文件中聲明,但是只有一個類可能是public,并且這個類的名字必須和文件名字相同。
導入類,即使對這個類的引用都是完全合法的。要使用MyPackage.MyClass類,你必須導入它:
import MyPackage.MyClass;
你必須這樣做既是所有的引用都是完全合法的,并且要使用完整的名字MyPackage.MyClass。在ActionScript 3.0中,import語句表明你想要使用一個來自另外一個包中的類,而在ActionScript 2.0中,它只是用來幫助記憶類名。在ActionScript 3.0中,完整的類名只是用來消除歧義,而不再是import語句的替代品。
也可以使用 * 通配符來導入一個包中的所有類。

import MyPackage.*;
單個地導入類被認為是一個好習慣,因為這樣更明確地表明了你的代碼使用了哪一個類。
始終標記方法的覆寫。Override關鍵字可以幫助避免覆寫方法時常見的錯誤,比如對一個被覆寫得方法定義了錯誤的名字或者被覆寫的方法的名字改變導致的錯誤。這樣做會使包含有覆寫方法的代碼看起來更清晰。因為編譯器能夠知道一個方法是否試圖覆寫另外一個,它就能執行更好的檢查。ActionScript 3.0中的override關鍵字是從C#的override關鍵字中獲得的靈感。
在函數中定義返回類型。為一個函數定義返回類型是一個好習慣。如果你忽略了返回類型,會出現一個警告。這是為了類型的安全性,這樣一來你就不會無意中沒有寫返回類型而得到默認的Object返回類型。如果一個函數沒有返回任何值,將它的返回類型聲明為void。
注意,delegate現在被定義到了語言里,使得事件分派更簡單。在ActionScript 2.0中,把事件指向到一個方法需要使用mx.utils.Delegate 類或者其他的工作:
import mx.utils.Delegate;
myButton.addEventListener(”click”, Delegate.create(this, onClick));
在ActionScript 3.0中,方法的一個引用會自動記住它引用的對象實例。這被稱為method closure。本質上來說,這就是一個自動的delegate。所以,代碼可以簡單地寫成:
myButton.addEventListener(”click”, onClick);
現在解除一個null或者undefined的引用將會拋出一個異常。解除一個null或者undefine的引用在以前的ActionScript中會被忽略并且定義引用為undefined?,F在,一個TypeError異常會拋出。提防無意中解除的null或undefined引用,并且依靠這個報告錯誤的特性。這種新的拋出異常的特性與ECMAScript定義相符合。
使用-verbose-stacktraces和 -debug選項。使用命令行選項-verbose-stacktraces和-debug編譯可以使文件名和行號出現在Flash Player的警告框中。當一個運行時錯誤發生時,一個對話框會描述這個錯誤并且列出它發生錯誤的地方的調用堆棧。使用-verbose-stacktraces和-debug選項可以讓在源代碼中定位錯誤變得簡單。
顯式聲明bindable屬性。屬性不再默認為bindable。你必須使用[Bindable]元數據標簽來聲明它們為bindable。
注意Flash Player API被重新組織到了包里。以前Flash Player API中所有的類和函數都是全局的?,F在有了許多包,象flash.display, flash.events, flash.ui以及其它。舉個例子,MovieClip現在是flash.display.MovieClip并且getTimer 和 setInterval都被放進了flash.utils 包中。
使用新的Timer類,而不是setInterval/setTimeout。與setInterval/setTimeout函數相比,新的Timer類為timer事件提供了更清晰的機制。新的Timer類與setInterval方法相比有很多優勢,比如不需要處理ID數字間隔,還有一個更好的,面向對象的接口。我們把使用Timer而不是使用setInterval和setTimeout看作是一個好習慣。
確認事件(event)是繼承而來的?,F在事件(event)是強類型的,并且必須是新的Event基類的子類。新的Event類讓事件體系更加清晰和有效。但是,這也意味著當分派事件的時候你不能再使用Object類的通用實例了,并且你不能使用對象的文字簡寫——例如,{type: ‘customEvent’ }。
你現在需要使用Event類(例如,dispatchEvent(new Event (’myCustomEventType’))),而不是創建一個通用的Object類。如果你想要傳遞附加的屬性就需要從Event繼承。不使用Object的動機是為了獲得更高的類型安全性和效率。
注意可視的元素必須繼承自DisplayObject,并且你可以像其它類一樣定義它們。組件現在通過new動態創建并且使用addChild被添加到顯示列表中。所以,不鼓勵使用createChild。可視化的實體,包括TextField,可以像其它對象一樣實例化并且使用addChild或addChildAt簡單地添加到顯示列表中。注意,這意味著一些API消失了,比如createEmptyMovieClip 和 createTextField。你可以使用new TextField而不是使用createTextField來創建一個新的TextField。
現在在Flash中推薦使用 E4X (ECMAScript for XML)來操作XML。E4X與以前的Flash XML類相比非常強大并且更好地整合進了語言中,它還提供了很多新的性能。以前的Flash XML類依然可以使用。如果你喜歡用以前的XML API,它就在flash.xml包中。它依然可用只是重新命名成了XMLDocument。
當使用E4X的時候使用toXMLString方法。toString方法沒有為對象返回完整的XML標記;如果你想獲得,使用toXMLString方法。toString方法為XML對象返回一個簡單的字符串。它并不會完全將XML對象序列化。要獲得XML標記,請調用toXMLString方法。
For……in循環將不再枚舉類中聲明的屬性或者方法。它只枚舉一個對象的動態屬性。ActionScript 3.0特性中有一個針對對象自省的新的先進機制,叫做describeType。在ActionScript 3.0中使用它來自省對象。
現在一個SWF文件的根對象可以是你自主選擇的一個自定義類的實例。ActionScript 2.0中,一個SWF文件的根對象總是MovieClip的實例。而在ActionScript 3.0中,它可以使Sprite的任意子類。你可以設定一個類作為一個SWF文件的DocumentRoot。當其加載時,SWF文件會將它實例化然后將其作為自己的根對象。
特別感謝我們的開發團體為這篇文章提出建議。這里列出的決不是詳盡的,但是它是一個起點,可以幫助你打好學習ActionScript 3.0的基礎。如果你熟悉其它的面向對象的語言,你可能發現這些提示只是一個復習——復習你已經在別處學習到的并且可以立即在ActionScript 3.0中使用的技巧。
如果你對ActionScript 3.0和面向對象編程是一個新手,那么這些提示將會派得上用場。對你來說,這就是一個簡單的可以幫你鞏固知識的列表。編碼愉快!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品久久久久久久白皮肤| 一区二区亚洲精品国产| 国产精品久久久久久久久免费看| 国产精品亚洲视频在线观看| 国产成人福利视频| 国产精品国产三级国产aⅴ浪潮| 国产人妖伪娘一区91| 亚洲黄色www网站| 午夜精品福利电影| 欧美亚洲在线观看| 欧美在线中文字幕| 日韩欧美a级成人黄色| 国产盗摄xxxx视频xxx69| 亚洲国产日韩欧美在线图片| 久久精品国产久精国产思思| 日本亚洲欧美成人| 91精品视频免费| 国产成人欧美在线观看| 2020久久国产精品| 91久久精品在线| 日本最新高清不卡中文字幕| 日韩av网站大全| 国产精品嫩草影院久久久| 欧美视频裸体精品| 久久久久国产一区二区三区| 成人精品视频久久久久| 亚洲变态欧美另类捆绑| 国产精品一区二区性色av| 日韩av综合网| 日韩欧美有码在线| 日韩性生活视频| 精品在线观看国产| 高潮白浆女日韩av免费看| 国产精品久久久精品| 国产精品福利在线观看网址| 日韩精品久久久久| 色琪琪综合男人的天堂aⅴ视频| 亚洲成色999久久网站| 国产精品欧美激情| 亚洲xxxxx电影| 久久青草精品视频免费观看| 成人性生交大片免费观看嘿嘿视频| 国内外成人免费激情在线视频网站| 欧美激情精品久久久久久久变态| 欧美电影免费看| 国产精品69av| 国产精品欧美一区二区| 亚洲欧美色图片| 中文字幕av一区二区| 欧美成人自拍视频| 日韩国产激情在线| 国产成人一区二区在线| 久久精品国产2020观看福利| 欧美日韩美女在线观看| 亚洲国产黄色片| 色伦专区97中文字幕| 国产精品91一区| 亚洲人成网7777777国产| 国产suv精品一区二区| 亚洲人成网站777色婷婷| 国产精品久久久久久久久男| 国产一区二区欧美日韩| 亚洲自拍另类欧美丝袜| 88国产精品欧美一区二区三区| 综合网日日天干夜夜久久| 色狠狠久久aa北条麻妃| 国产精品青草久久久久福利99| 久久99国产精品自在自在app| 亚洲毛片在线免费观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲天堂一区二区三区| 日韩美女免费线视频| 中文字幕日韩免费视频| 亚洲va国产va天堂va久久| 这里精品视频免费| 最新69国产成人精品视频免费| 性欧美激情精品| 亚洲午夜av久久乱码| 成人午夜黄色影院| 日韩欧美在线观看| 国产精品成av人在线视午夜片| 国产在线一区二区三区| 欧美激情一区二区三区在线视频观看| 亚洲天堂av图片| 亚洲一级免费视频| 精品视频久久久久久久| 亚洲xxxxx电影| 亚洲国产精品久久久| 欧美成人精品在线播放| 日本精品免费一区二区三区| 国产精品一区二区三区毛片淫片| 亚洲天堂av女优| 国产精品一区二区三区成人| 精品久久在线播放| 岛国精品视频在线播放| 日韩在线播放一区| 久久视频国产精品免费视频在线| 亚洲夜晚福利在线观看| 91精品国产高清久久久久久91| 77777少妇光屁股久久一区| 欧美国产日韩精品| 日韩女在线观看| 精品国产拍在线观看| 亚洲黄色片网站| 精品国产依人香蕉在线精品| 亚洲国产精品嫩草影院久久| 成人福利在线观看| 国产一区二区三区三区在线观看| 久久综合免费视频| 精品国产拍在线观看| 亚洲欧美精品在线| 隔壁老王国产在线精品| 最近2019中文免费高清视频观看www99| 国产精品嫩草视频| 日韩中文字幕欧美| 国产在线视频2019最新视频| 欧美成年人视频网站欧美| 亚洲美女av电影| 91久久精品国产91久久| 青青久久aⅴ北条麻妃| 亚洲国产欧美在线成人app| 日韩成人在线视频网站| 国产精品99蜜臀久久不卡二区| 欧美高清自拍一区| 欧美日韩国产精品一区| 欧美日韩一区二区在线| 高清一区二区三区日本久| 久久久久这里只有精品| 中文字幕欧美国内| 欧美日韩在线视频首页| 在线观看国产欧美| 蜜月aⅴ免费一区二区三区| 欧美精品精品精品精品免费| 日本一本a高清免费不卡| 91精品久久久久久久久青青| 亚洲精品日产aⅴ| 亚洲最大成人免费视频| 国产精品综合不卡av| 一区二区欧美日韩视频| 久久久久久久一区二区三区| 精品无人区乱码1区2区3区在线| 国产精品黄色影片导航在线观看| 国产精品视频久久久| 亚洲国产私拍精品国模在线观看| 亚洲天堂免费视频| 亚洲第一综合天堂另类专| 不卡av电影院| 92看片淫黄大片欧美看国产片| 91精品久久久久| 91日本在线观看| 91精品久久久久久久久青青| 91精品国产91久久久久久不卡| 日韩不卡中文字幕| 国产激情综合五月久久| 国产精品久久久久久久9999| 国产精品爽爽爽| 亚洲电影成人av99爱色| 色哟哟入口国产精品| 亚洲成人精品视频在线观看| 国产日韩在线视频| 欧美极品美女电影一区| 亚洲美女又黄又爽在线观看| 日韩精品免费在线播放| 欧美在线免费看|