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