Loader的load方法和loadBytes方法LoaderContext参数
(1)在看代碼的時候還發現一個以前沒有這么注意的問題,也mark一下。
關于Loader的load方法和loadBytes方法LoaderContext參數的問題。。
?
要加載某個SWF到自己的安全域內,需要給Loader.load方法指定一個LoaderContext對象。LoaderContext對象的securityDomain屬性設置為當前的安全域(SecurityDomain.currentDomain)。通過這樣的加載方式,父SWF授信給子SWF,而子SWF的授信則需要通過跨域策略文件。
也就是說LoaderContext=null 的情況下則已加載的內容將保留在它自己的安全域中。
?
而使用loadBytes和load不同的是,它不是用URL來加載外部內容,而是直接加載以ByteArray的形式加載對象。
由于ByteArray與域名之間沒有關聯,所以用loadBytes方法加載的對象將直接進入當前安全域內。因為你在加載包含這些字節對象之前往往都要經過某種信任授權,所以這通常是安全的。
即:loadBytes如果未指定 context 參數或者該參數引用了 null 對象,則內容將加載到當前的安全域(在 Flash Player 安全文檔中稱為“導入加載”的進程)中。具體來說,如果執行加載的 SWF 文件通過將遠程 SWF 并入到其代碼中來信任遠程 SWF,則執行加載的 SWF 可直接將其導入到自己的安全域中。
?
(2)項目代碼中很多的工程帶有DLL的后綴,其實是用來把swc中的定義連接然后打包成swf用于動態加載,實現動態鏈接庫的功能。為什么要這么做呢?這源于swc和swf的區別。
在Flash Builder中用Actionscript寫的類可以打包成swc或swf,
在Flash CS中制作的元件也可以打包成swc或swf文件,
一個swc或swf文件中可以包含多個類或元件,
每個元件會映射成一個類,
因此,在Flash Builder中的類和在Flash CS中的元件是等價的。
swc和swf文件的使用區別是:
swc?作為類庫導入到項目中直接實例化即可使用,就像自帶的flash包下面的類一樣使用;
swf?則需要用Loader加載進來,再用getDefinition方法取得類后,才可以實例化使用;
使用swc的好處是方便、快捷,缺點是swc文件會編譯到項目輸出的swf文件里面,
從而增加最終swf文件的大小,也許對于一些小項目這并非缺點;
使用swf的好處是在眾多的網頁游戲中,玩家沒有耐心等待漫長的加載過程,
所以在需要的時候才加載會提高游戲體驗效果,而這些實時加載的類或資源就打包成swf文件;
Flash Player有一套專門的加載swf文件的機制,而加載的swc文件則無法解析使用。
使用swf的缺點是麻煩,需要加載,需要處理事件,需要取得相應的類才能使用。
但現在的網頁游戲中大都使用swf作為資源文件,swc作為第三方類庫使用。
?
轉載于:https://www.cnblogs.com/wonderKK/archive/2013/03/28/2986249.html
總結
以上是生活随笔為你收集整理的Loader的load方法和loadBytes方法LoaderContext参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论设计,需求和编码三者的关系
- 下一篇: Redhate5.4下Oracle 11