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

发布于 2024-07-21 00:08:59 字数 853 浏览 6 评论 0原文

我正在尝试将用 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.

The AS2 swwf has a lot of code 并且我真的不想迁移到 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);
}

谢谢大家。

I am trying to load a swf written in AS2 into an AS3 swf - using Loader class and listening for Event.COMPLETE. in my onCompleteHandler function i want to add this to the stage so Im trying -

addChild(evt.currentTarget.content) 

... but I get the following error message:

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.

The AS2 swwf has a lot of code and I really dont want to have to migrate to AS3 if I can avoid it. Anybody know if this is possible or know of a differnt way to add the loaded swf to the stage. How do I then go about calling functions in the loaded swf?

Here is a code snippet -

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);
}

Thanks all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺渁∝ 2024-07-28 00:08:59

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

The only really effective way to do this is by using LocalConnection. AS2 and AS3 can't communicate much with each other. If you still have access to the AS2 file's source, you can expose some functions with LocalConnection. There's also a neat helper class by Grant Skinner called SWFBridge that takes some of the groundwork out of doing this, it's available here: http://www.gskinner.com/blog/archives/2007/07/swfbridge_easie.html

梦开始←不甜 2024-07-28 00:08:59

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
var request:URLRequest = new URLRequest("testLoadSwf.swf");
加载器.load(请求);

函数 onCompleteHandler(evt:Event) {
//addChild(evt.currentTarget.content);
}
添加子进程(加载器)

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);
}
addChild(loader)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文