簡體   English   中英

如何在Flex中嵌入SWF並在嵌入式SWF中獲取時間軸代碼?

[英]How to embed SWF in Flex and get the timeline code in the embedded SWF?

我的客戶希望將所有資源嵌入到我用Flex創建的Main SWF中。 UI本身起源於一個.FLA,它必須具有時間軸動作腳本(AS3)。 將SWF嵌入之后,嵌入式SWF中似乎沒有時間軸AS。 這可能解決嗎?

我這樣嵌入:

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類中執行play()。

事實是,播放並且加載的SWF中的所有AS代碼都完全死了。

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

謝謝,羅伯

根據我在代碼中看到的內容,您正在執行異步的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;  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM