我正在尝试将AS2中编写的swf加载到AS3 swf中 - 使用Loader类并侦听Event.COMPLETE。在我的onCompleteHandler函数中,我想将它添加到舞台中,所以我在尝试 -
addChild(evt.currentTarget.content)
...但是我收到以下错误消息:
Error #2180: It is illegal to move AVM1 content (AS1 or AS2) to a different part of the displayList when it has been loaded into AVM2 (AS3) content.
AS2 swwf有很多代码,如果可以避免的话,我真的不想迁移到AS3。任何人都知道这是否可行,或者知道将加载的swf添加到舞台的不同方法。然后我如何在加载的swf中调用函数?
以下是代码段 -
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
var request:URLRequest = new URLRequest("testLoadSwf.swf");
loader.load(request);
function onCompleteHandler(evt:Event) {
addChild(evt.currentTarget.content);
}
谢谢大家。
答案 0 :(得分:2)
唯一真正有效的方法是使用LocalConnection。 AS2和AS3无法相互通信。如果仍然可以访问AS2文件的源,则可以使用LocalConnection公开某些函数。还有格兰特斯金纳称为SWFBridge的一个简洁的助手课程,它完成了一些基础工作,可以在这里找到:http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html
答案 1 :(得分:0)
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onCompleteHandler); var request:URLRequest = new URLRequest(“testLoadSwf.swf”); Loader.load方法(请求);
function onCompleteHandler(evt:Event){ //addChild(evt.currentTarget.content); } 的addChild(装载机)