第四章:ActionScript語言和語法 包

1.包

package samples{

public class SampleCode{

public var sampleGreeting:String;

public function sampleFunction(){

trace(sampleGreeting + " from sampleFunction()");

}

}

}

package samples{ --> 包,名稱 samples

public class SampleCode{ --> 類,名稱 SampleCode

說明:

由于位于 samples 包中,編譯器會(huì)自動(dòng)將類名限定為 samples.SampleCode。

同理,屬性名為 samples.SampleCode.sampleGreeting 方法名為 samples.SampleCode.sampleFunction。

包的頂級(jí)可以放類,屬性,方法。

包的頂級(jí)只能使用 public 和 internal 訪問說明符。internal 是默認(rèn)的,表示只能在當(dāng)前包內(nèi)使用。

包的作用是確保標(biāo)識(shí)符唯一,防止共享時(shí)同名類沖突。

大部分 ActionScript3.0 都劃分到 flash 包,如 flash.display 包中包含顯示列表 API,flash.events 包中包含新的事件模型。

2.導(dǎo)入包

import samples.*; 或者 import samples.SampleCode;

3.命名空間

表示屬性或者函數(shù)位于哪個(gè)地方,例如 public 是公共命名空間,internal 命名空間將應(yīng)用于沒有命名空間屬性的任何標(biāo)識(shí)符。

定義命名空間使用 namespace,如 namespace version1;

在屬性或方法聲明中使用命名空間,而不是訪問控制說明符來應(yīng)用命名空間,如 version1 functionmyFunction(){}

應(yīng)用了命名空間后,可以使用 use namespace version1; myFunction(); 來引用函數(shù),還可以使用限定名稱 version1::myFunction(); 來引用函數(shù)。

命名空間包含統(tǒng)一資源標(biāo)識(shí)符值(URI),可以省略。

namespace flash_proxy = "http://www.adobe.com/flash/proxy";

namespace flash_proxy;

在包內(nèi)或者類中定義的命名空間如果沒有使用訪問說明符 public 則對(duì)包外代碼不可見。如: public namespace flash_proxy;

命名空間應(yīng)用智能是屬性和方法,類不能使用。

使用命名空間后將不能再使用訪問控制說明符 public private protected internal,因?yàn)樗麄兪腔コ獾摹?/p>

4.擴(kuò)展

假設(shè):

package flash.utlis{

public namespace flash_proxy; 定義的命名空間

}

public class Proxy{ Proxy類

flash_proxy funxtion callProperty(name:*,...rest):* 使用了命名空間的方法

flash_proxy funxtion deleteProperty(name:*):Boolean

}

那么:

MyProxy.as

package{

import flash.utils.Proxy; 導(dǎo)入 Proxy 類

import flash.utils.flash_proxy; 導(dǎo)入 flash_proxy 命名空間

public dynamic class MyProxy extends Proxy{ 用自己的 MyProxy 類 擴(kuò)展 Proxy 類,外部 new 類需要使用訪問控制說明符 public

flash_proxy override function callProperty(name:*,...rest):*{ 覆蓋 Proxy 類 的 callProperty 方法,必須使用 falsh_proxy 命名空間

trace("method call intercepted: " + name);

}

}

}

如果現(xiàn)在在第一幀動(dòng)作中創(chuàng)建 MyProxy 類,并調(diào)用未定義方法

var mySample:MyProxy = new MyProxy();

mySample.testing();

則 Proxy 對(duì)象會(huì)截獲對(duì)這個(gè)方法的調(diào)用,并執(zhí)行覆蓋后的 callProperty 方法。

輸出:method call intercepted: testing

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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