最近朋友問我一個載入 flash 檔的問題
外部載入一個 swf , 並呼叫裡面一個 public 的函式
這麼簡單的問題,馬上就可以決解,
結果卻花了我半小時,一查之下才發現是 TLF Text 產生的
被載入的 swf 主程式碼
public class LoadedDoc extends MovieClip{
public function LoadedDoc() {
trace("LoadedDoc");
}
public function test():void {
trace( "test");
}
}
載入的主程式碼
var loginLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("alert_as.swf");
loginLoader.load(url);
loginLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loginPageLoadCompleteHandler);
public function loginPageLoadCompleteHandler(e:Event){
var _alertAS:MovieClip = e.currentTarget.loader.content as MovieClip;
_alertAS.test();
}
正常來說,這樣寫可以成功呼叫,但當你的被載入swf有使用新版的 TLF Text時
flash會很好心的幫你多包了一層 Class, 導至就產生了錯誤
用 Flash Decompile 來看一下
使用 TLF Text
使用 Classic Text
目前還想不到解法, 先筆記一下
3 則留言:
[AS3] 关于TLF文字实例的问题
http://bbs.9ria.com/viewthread.php?tid=86061
這個問題小弟有遇到過,也是用一個SWF load SWF後出現錯誤,之後有去過ADOBE官網看一些資料,這應該是個BUG,不過有解決的方法,要另外使用SafeLoader 這個class他也有content方法,就可以了。
附上網址:http://kb2.adobe.com/cps/838/cpsid_83812.html
感謝分享,這就來讀一讀
張貼意見