繁体   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