flash - as2和as3之间的通信

标签 flash actionscript-3 actionscript-2

我在“as2.swf”的按钮下有此代码

on (release) {
unloadMovie(this);  
}

这个 swf 正在被加载到名为“main.swf”的 as3 容器中,但是当我按下它时没有任何反应,并且文件不会自行卸载。任何人都可以启发我吗?

最佳答案

ActionScript 3 使用 AVM2 虚拟机,而 ActionScript 2 使用较旧的 AVM。这意味着它们不在同一个沙箱中。因此,两者之间的沟通充其量是困难的。

AVM2(as3)可以加载AVM1(as2)并与AVM1(as2)一起使用,但AVM1无法加载AVM2。

以下是如何在两者之间进行通信的示例:

AS3 示例:

import flash.net.LocalConnection;
import flash.display.Stage;

var receiverLC:LocalConnection = new LocalConnection()

receiverLC.connect("__myConnection");

receiverLC.client = this;  

var request:URLRequest = new URLRequest("as2Movie.swf");

var loader:Loader = new Loader();

loader.load(request);

mainLoader_mc.addChild(loader);
. 
function changeSpeed(speed:Number):void {

stage.frameRate=speed

}

AS2 示例:

var sending_lc:LocalConnection=new  LocalConnection()

function changeSpeed(num:Number){

sending_lc.send("__myConnection", "changeSpeed",num);

}

关键是 AS2 必须将命令传递回 AS3 - 关键是这一行:

sending_lc.send("__myConnection", "changeSpeed",num);

因此,不要依赖 AS2 操作,而是将操作发送到 AS3 容器。

示例来自:http://flashgosu.com/?tag=as2-to-as3-avm1-to-avm2

关于flash - as2和as3之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455649/

相关文章:

c# - 如何将二进制文件从actionScript 发送到.net?

javascript - flashvars 不适用于从 url 读取的字母数字值

actionscript-3 - actionscript 3 - Sprite 始终在顶部

android - AIR Android force 数字文本输入

flash - ActionScript 2 事件的最佳实践 - 有没有模拟 ActionScript 3 样式事件的方法?

flash - 获取鼠标下的对象

ruby-on-rails - 在 Rails 中出现两次 Flash 消息

javascript - 如何使用未提供经纬度的地址在谷歌地图上放置多个标记?

python - AMF 通信如何工作?

flash - Flash Builder 中资源的路径