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