可以将AS2 swf加载到AS3 swf中吗?如何将其添加到舞台并与As3 swf进行交互?

时间:2009-05-18 13:56:29

标签: actionscript-3 migration actionscript-2 loader addchild

我正在尝试将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);
}

谢谢大家。

2 个答案:

答案 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(装载机)