我在“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 容器。
关于flash - as2和as3之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455649/