import flash.display.Loader;
import flash.net.URLRequest;
import flash.system.LoaderContext;
var aPolce:LoaderContext = new LoaderContext(true);
var loader:Loader = new Loader();
loader.load(new URLRequest(http://xxxxxxxx/xxxx.xxx),aPolce);
//需要在原來的調用基礎增加LoaderContext類;
使用 Loader.load()
方法加載 SWF 文件時,需要做出兩個決定:應將所加載的 SWF 文件放置到哪個安全域中,以及應放置到該安全域中的哪個應用程序域中。
而使用 Loader.loadBytes()
方法加載 SWF 文件時,只要選擇應用程序域,但不必指定安全域,這是因爲Loader.loadBytes()
始終將其加載的(子swf) SWF 文件放置到執行加載(父:swf)的 SWF 文件的安全域。
如果是加載圖像(JPEG、GIF 或 PNG)而不是 SWF 文件,則無需指定安全域或應用程序域,這是因爲這些概念只對 SWF 有意義。 此時您只需做出一個決定:是否需要以編程方式訪問所加載圖像的像素。
LoaderContext含有3個公共屬性:
applicationDomain : ApplicationDomain = null
applicationDomain | 屬性 |
指定用於 Loader.load()
或 Loader.loadBytes()
方法的應用程序域。 只應在加載使用 ActionScript 3.0 編寫的 SWF 文件(不是圖像或使用 ActionScript 1.0 或 ActionScript 2.0 編寫的 SWF 文件)時才使用此屬性。
checkPolicyFile | 屬性 |
指定 Flash Player 是否應在開始加載對象本身之前,嘗試從所加載對象的服務器上下載跨域策略文件。 此標誌適用於 Loader.load()
方法,但不適用於 Loader.loadBytes()
方法。
如果從執行調用的 SWF 文件(父swf)所在的域之外加載圖像(JPEG、GIF 或 PNG),並且需要從 ActionScript 訪問該圖像的內容,請將此標誌設置爲 true
。 訪問圖像內容的示例包括引用 Loader.content
屬性以獲得 Bitmap 對象,以及調用 BitmapData.draw()
方法以獲得所加載圖像像素的副本。 如果在加載時沒有指定 checkPolicyFile
,就會得到一個 SecurityError
異常,這是因爲沒有
下載所需的策略文件。
securityDomain | 屬性 |
指定用於 Loader.load()
操作的安全域。 只應在加載 SWF 文件(圖像文件不需要)時使用此屬性。只有在被加載的 SWF 文件與執行加載的 SWF 文件可能來自不同的域(不同的服務器)時,選擇安全域纔有意義。 在從其它域加載 SWF 文件時,有兩種方法:
1,可以允許將被加載的 SWF 文件放置到其“自然的”安全域中,此安全域與執行加載的 SWF 文件的安全域不同;這是默認設置。
2,另一種選擇是通過將 myLoaderContext.securityDomain
設置爲與 SecurityDomain.currentDomain
相同,指出希望將被加載的 SWF 文件放置到執行加載的 SWF 文件所在的安全域中。 這稱作導入加載,就安全性而言,它等同於將被加載的 SWF 文件複製到本地服務器,然後從該服務器加載它。 此時,被加載的(子swf)SWF 文件的服務器必須具有一個策略文件,並且該策略文件必須信任執行加載的
SWF 文件的(父)域。另外,只能在傳遞在LoaderContext.securityDomain設定的
安全域。 如果試圖傳遞任何其它的安全域,則會引發SecurityError
異常。
我們簡單認識了LoaderContext的一些作用,但是LoaderContext是爲了Loader類服務的,所以還必須對loader類進行一些認識,諸位讀者就自己研究吧~