我在'as2.swf'
的按钮下面有这个代码on (release) {
unloadMovie(this);
}
并且这个swf被加载到名为“main.swf”的as3容器中,但是当我按下它时没有任何反应,文件也没有自行卸载。任何人都可以启发我吗?
答案 0 :(得分:4)
ActionScript 3使用AVM2虚拟机,而ActionScript 2使用旧版AVM。这意味着它们不在同一个沙箱中。因此,两者之间的沟通充其量是困难的。
AVM2(as3)可以加载和使用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容器。