2012年2月11日星期六

Flash TLF Text Bug

大家好,我是奶綠茶
最近朋友問我一個載入 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 則留言:

{id: "Ticore"}; // 提到...

[AS3] 关于TLF文字实例的问题
http://bbs.9ria.com/viewthread.php?tid=86061

Kan 提到...

這個問題小弟有遇到過,也是用一個SWF load SWF後出現錯誤,之後有去過ADOBE官網看一些資料,這應該是個BUG,不過有解決的方法,要另外使用SafeLoader 這個class他也有content方法,就可以了。

附上網址:http://kb2.adobe.com/cps/838/cpsid_83812.html

milkmidi 提到...

感謝分享,這就來讀一讀