override不能用于重載變量(成員屬性)。但是卻可以用于重寫getter 和setter 函數(shù),例如:(官方幫助的例子) package { import flash.display.MovieClip; public class OverrideExample extends MovieClip { public function OverrideExample() { trace(currentLabel) } override public function get currentLabel():String { var str:String = “Override: “; str += super.currentLabel; return str; } } }
這個(gè)例子中,我們直接重寫了MovieClip類的currentLabel 屬性。注意調(diào)用父類屬性的時(shí)候,用了super.currentLabel。
關(guān)于靜態(tài)方法,比較麻煩。首先,靜態(tài)方法是無法被重載的。必須通過類來訪問。但是您也可以自己定義與靜態(tài)方法同名的方法,我把官方的例子做了一下修改就一目了然了:
package { import flash.display.MovieClip; public class StaticExample extends MovieClip { public function StaticExample() { var myExt:Extender = new Extender(); } } }
class Base { public static var test:String = “static”; }
class Extender extends Base { private var test:String = “instance”; public function Extender() { trace(Base.test); // output: static trace(test); //added by awflasher.com, output: instance } }
七、關(guān)于import語法 在AS2時(shí)代,“import”語法只是為了讓編程時(shí)代碼簡潔(省去了包名),比如我們import了mx.transitions.Tween之后,就可以直接new Tween()了。而如果不import,我們也可以直接用全類名來構(gòu)造實(shí)例,例如:new mx.transitions.Tween();
然而,在AS3中,無論是否采用全名類聲明,只要你用到這個(gè)類,就必須import。import 估計(jì)是傳統(tǒng)Flash程序員所需要養(yǎng)成的一個(gè)最大的習(xí)慣,在剛切入AS3開發(fā)平臺的時(shí)候,我常常忘記import一些常用的類,例如從IDE 指向過來的文本和渲染元件,以及flash.event.*、flash.display.StageAlign等比較泛用的類。
AS3中不像AS2那樣,我們不能用_root和Stage[”displayState”]來進(jìn)行hacks了。
八、關(guān)于編譯時(shí)的注意事項(xiàng) AS3不再像AS2那樣簡單地Compile-Time(編譯時(shí),即FlashCS3/FlexBuidler/其他編譯器發(fā)布ActionScript 及所有資源為SWF文件的那一時(shí)刻)進(jìn)行類型檢測了,AS3在Run-Time(運(yùn)行時(shí),級Flashplayer 或者其他播放SWF的軟件在播放SWF 的時(shí)候)也有類型檢測,因此AS2的Hacks(強(qiáng)制訪問不能訪問的屬性)將不再有效。
九、一個(gè)不得不說的好消息 AS3中類所有的變量(屬性)和函數(shù)(方法)的作用域都是運(yùn)行時(shí)跟類/實(shí)例走的。這與AS2大有不同,我們不再需要去Delegate了。只要是類自己的方法,在調(diào)用的過程中,this永遠(yuǎn)指向類自己(實(shí)例)。
簡要總結(jié): 1、如果我需要屬性公開,并且可以被自己的子類繼承,那么定義成public的。子類也可重寫(override)之。 2、如果我需要屬性隱藏,但是可以被自己的子類繼承,那么定義成protected的。與public類似,子類也可重寫(override)之。 3、如果我的某一個(gè)類有一個(gè)屬性不想在任何位置可見,包括其子類,那么定義為private的。其子類無需重寫(override),因?yàn)樗揪筒淮嬖谟谧宇愔小?/p>
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2743937-1-3.html
本文鏈接:http://m.95time.cn/tech/multimedia/2007/4703.asp
出處:藍(lán)色理想
責(zé)任編輯:elesa
上一頁 AS3的面向?qū)ο筇攸c(diǎn)概述 [1] 下一頁
◎進(jìn)入論壇Flash專欄版塊參加討論
|