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.
Пример из: http://flashgosu.com/?tag=as2-to-as3-avm1-to-avm2