[英]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.