2010-05-26 42 views
1

我的客戶希望將所有資源嵌入到使用Flex創建的主SWF中。 UI本身起源於必須具有時間線動作(.AS3)的.FLA。在嵌入SWF之後,嵌入式SWF中似乎沒有時間線AS。這有可能解決嗎?如何在SWF中嵌入SWF並獲取嵌入式SWF中的時間軸代碼?

我嵌入這樣的:

 
public var templ: TemplateBase; 


[Embed(source="images/template_banner.swf", mimeType="application/octet-stream")] 
public var TemplateSWF:Class; 
 
... 

var ba : ByteArray = new TemplateSWF() as ByteArray; 
var l : Loader = new Loader(); 
l.loadBytes(ba); 
l.addEventListener(Event.ADDED_TO_STAGE, onTemplateAdd); 
addChild(l); 

private function onTemplateAdd(evt:Event):void{ 
    templ = evt.target.contentLoaderInfo.content; 
} 

在template_banner.swf有一個stop();在框架1中,以及框架2中的一些代碼。 我在兩個框架中都跟蹤,但Flex(4)調試器中沒有顯示任何框架。 swf添加到舞臺後,我在TemplateBase類中播放()。

事情是這個遊戲和加載的SWF中的所有AS代碼完全死機。

我的問題是:有沒有辦法讓嵌入式SWF中的時間線AS代碼?是的,我需要將SWF嵌入到Flex的主要文件:/

感謝, 羅布

+0

你可能想先檢查http://stackoverflow.com/questions/602057/load-and-play-embedded-swf-file-in-flex這個問題-actionscript – phwd 2010-05-26 22:11:50

回答

1

從我所看到的代碼,你正在做的loadBytes這是異步的...然後等待到ADDED_TO_STAGE,並在事件監聽器中訪問內容...

因爲loadBytes是異步的,所以您應該等待加載完成。 在完整的監聽器中,您應該可以訪問加載的內容。 我完全避免了ADDED_TO_STAGE。

做這樣的:

public var templ: TemplateBase; 

[Embed(source="images/template_banner.swf", mimeType="application/octet-stream")] 
public var TemplateSWF:Class; 

var ba : ByteArray = new TemplateSWF() as ByteArray; 

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
loader.loadBytes(ba); 

private function completeHandler(event:Event):void { 
    templ = evt.target.contentLoaderInfo.content; 
}