2

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

谢谢大家。

4

2 回答 2

2

唯一真正有效的方法是使用 LocalConnection。AS2 和 AS3 之间无法进行太多通信。如果您仍然可以访问 AS2 文件的源代码,则可以使用 LocalConnection 公开一些函数。还有一个由 Grant Skinner 编写的名为 SWFBridge 的简洁助手类,它为此做了一些基础工作,可在此处获得:http ://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

于 2009-05-18T14:22:52.250 回答
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(加载器)

于 2009-07-28T13:10:04.057 回答