getDefinitionByName ReferenceError: Error #1065: 變數 未定義 解決辦法
阿新 • • 發佈:2019-02-19
從外部載入一個swf資源(1.swf),該swf中有一個匯出類ui.goods.Goods1,載入完成後用getDefinitionByName去取ui.goods.Goods1,老是報異常:ReferenceError: Error #1065: 變數 未定義。
public class Test extends Sprite { public function Test() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); var reqUrl:URLRequest = new URLRequest("1.swf"); loader.load(reqUrl); } private function completeHandler(e:Event):void { try{ var cla:Class = getDefinitionByName("ui.goods.Goods1") as Class; }catch(e:Error){ trace("getDefinitionByName異常", e.message); } } }
修改成以下程式碼後正常:
原理:public class Test extends Sprite { public function Test() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); var reqUrl:URLRequest = new URLRequest("1.swf"); loader.load(reqUrl, new LoaderContext(true, ApplicationDomain.currentDomain)); } private function completeHandler(e:Event):void { try{ var cla:Class = getDefinitionByName("ui.goods.Goods1") as Class; }catch(e:Error){ trace("getDefinitionByName異常", e.message); } } }
loader.load(reqUrl, new LoaderContext(true, ApplicationDomain.currentDomain));
把1.swf新增到當前域