ActionScript3.0基礎(chǔ)(一)


訪問控制屬性:

public:公有屬性

private:私有類型的變量和方法只允許定義它們的類訪問,其他類訪問報(bào)錯(cuò),包括子類

internal:內(nèi)部對(duì)象既不是公有類型也不是私有類型,與定義對(duì)象的類具有相同類包的類才可以訪問,也就是說,擁有相同包聲明(例如 package {...}的任何類都可以調(diào)用方法或訪問變量)

protected:內(nèi)部類型將訪問權(quán)限限制為其他特定的類,而受保護(hù)類型與此類似,只有子類可以訪問受保護(hù)類型的對(duì)象。

作用域:

全局作用域:根時(shí)間軸中或在函數(shù)和類外部定義的任何對(duì)象都屬于全局作用域。(不提倡將對(duì)象定義在時(shí)間軸中)

局部作用域:根據(jù)對(duì)象的定義方式,局部訪問(或子作用域)可分為幾個(gè)不同的級(jí)別

類級(jí)(靜態(tài))變量和方法

這些對(duì)象存在于類級(jí)作用域中;換句話說,它們屬于類本身,而不是類的實(shí)例,可以使用static關(guān)鍵字來定義這些對(duì)象

package{

????? public class ScopeTest{

???????????? public static var foo:String = "bar";

}

}

可以使用類名加對(duì)象名來訪問這些對(duì)象。

trace(ScopeTest.foo);

在類中定義的代碼無需使用類名便可直接使用這些變量和方法,但是類的所以實(shí)例都共享相同的靜態(tài)值。由于類在任何地方都可使用(只要導(dǎo)入了類并將它聲明為public),因此類級(jí)變量與全局變量具有相同的作用。

實(shí)例級(jí)變量和方法

類還可以定每個(gè)類實(shí)例中的變量和方法。在開發(fā)過程中,大多數(shù)變量和方法都屬于該作用域

package{

????? public class ScopeTest{

public static var foo:String = "bar";

public var answer:Number = 42;

}

}

與靜態(tài)變量不同,實(shí)例變量對(duì)于類的各個(gè)實(shí)例都是相互獨(dú)立的

要訪問實(shí)例變量,可以使用實(shí)例名加點(diǎn)再加變量名,如下所示:

var myTest:ScopeTest = new ScopeTest();

trace(myTest.answer)

注意:實(shí)例本身被刪除時(shí),所有實(shí)例變量都將自動(dòng)從內(nèi)存中釋放,但是,如果其他對(duì)象引用了這些變量,則它們可以保留在內(nèi)存中。如果程序在內(nèi)存管理方面存在問題,那么刪除實(shí)例前最好先移除到類及其成員的所有引用。

函數(shù)級(jí)變量和函數(shù)

對(duì)象也可以在函數(shù)中定義,每個(gè)函數(shù)都將在運(yùn)行期間創(chuàng)建一個(gè)臨時(shí)的作用域。函數(shù)中定義的變量可用于暫時(shí)存儲(chǔ)值,并且將在函數(shù)運(yùn)行結(jié)束之后刪除。

package{

????? public class ScopeTest{

public static var foo:String = "bar";

public var answer:Number = 42;

public function showGreeting():void{

??? var message:String = "Hello ,world!";

???? trace(message);

}

}

}

var myTest:ScopeTest = new ScopeTest();

myTest.showGreeting();

trace(myTest.message);

(message變量的生存期只限于showGreetiong()函數(shù)的執(zhí)行期間)

函數(shù)中定義的變量只有在函數(shù)開始執(zhí)行后才可以使用。在類中定義的變量可以從函數(shù)內(nèi)部訪問,反過來則不行.

package{

??? public class Local{

???????? public var a:String = "instance";

???????? public var b:String = "instance";

???????? public function method():void{

????????????? var a:String = "function";

?????????????? b = "function";

??????????????? trace(a);

??????????????? trace(b);

}

}

}

對(duì)于a,函數(shù)自己定義了一個(gè)名為a的變量,它所定義的函數(shù)級(jí)變量將臨時(shí)覆蓋實(shí)例變量a。

而對(duì)于b,函數(shù)中使用的是實(shí)例變量(因?yàn)槲词褂胿ar關(guān)鍵字)并且被賦了新值function.

建議在引用與函數(shù)變量同名的實(shí)例變量時(shí)使用this關(guān)鍵字:

public function setFoo (foo:String):void{

this.foo = foo;

}

調(diào)用foo的實(shí)例變量將被覆蓋為傳遞到該方法中的值

使用作用域

通常,應(yīng)盡可能地將變量定義在較低的局部作用域中。局部變量更易于垃圾回收,因?yàn)榭梢詼p少開銷,但這并不意味著在任何情況下都可盲目地使用函數(shù)變量

XML注釋<!--和-->,起始和結(jié)束標(biāo)記之間的內(nèi)容中不能包含--字符串

小結(jié):ActionScript以變量的使用為基礎(chǔ),而變量從本質(zhì)上說就是在程序運(yùn)行過程中保存數(shù)據(jù)的容器

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容