связь между as2 и as3 - PullRequest
       18

связь между as2 и as3

2 голосов
/ 16 марта 2010

У меня есть этот код под кнопкой в ​​as2.swf

on (release) {
unloadMovie(this);  
}

и этот SWF-файл загружается в контейнер as3, называемый main.swf, но когда я нажимаю, ничего не происходит, и файл не выгружается сам Кто-нибудь может просветить меня об этом?

1 Ответ

4 голосов
/ 16 марта 2010

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

...