ГлавнаяActionScript 3 — «100 советов» › Взаимодействие между AVM2 (AS3) и AVM1 (AS2/AS1) через LocalConnection

Взаимодействие между AVM2 (AS3) и AVM1 (AS2/AS1) через LocalConnection

June 19th, 2006
Код ActionScript выполняется во flash-плеере в специальной «виртуальной машине», для ActionScript 1 и 2 это была AVM1, для ActionScript 3 была разработана новая AVM2. Нет возможности напрямую взаимодействовать между программами выполняющимся в разных виртуальных машинах, поскольку они несовместимы. К примеру, если в мувик созданный на ActionScript 3 загрузить внешний мувик из ActionScript 1 или 2, то не удастся напрямую управлять им: запустить, остановить, вызвать функцию, считать значение свойства и т.п.
Но можно создать специальный канал для взаимодействия при помощи LocalConnection, используя:

Пример:

Код:
// файл на ActionScript 2: AS2animation.fla // на timeline размещен один мувиклип названный animation_mc //Устанавливаем local connection для получения команд извне var AVM_lc:LocalConnection = new LocalConnection(); // обработчик события stopAnimation AVM_lc.stopAnimation = function(){ animation_mc.stop(); } // слушаем события по каналу "AVM2toAVM1" AVM_lc.connect("AVM2toAVM1");
Код:
// Файл на ActionScript 3: AS3Loader.fla // local connection для взаимодействия с мувиклипом в AVM1 var AVM_lc:LocalConnection = new LocalConnection(); // загружаем внешнюю SWF AVM1 var loader:Loader = new Loader(); loader.load(new URLRequest("AS2animation.swf")); addChild(loader); // при клике мышкой по загруженному мувиклипу вызывается stopPlayback loader.addEventListener(MouseEvent.CLICK, stopPlayback); function stopPlayback(event:MouseEvent):void { // вызывается stopAnimation по каналу "AVM2toAVM1" AVM_lc.send("AVM2toAVM1", "stopAnimation"); }

Здесь AS3-мувик подгружает к себе AS2-мувик и размещает на сцене. Когда AS2-мувик подгружен и проигрывается пользователь может кликнуть по нему для прекращения проигрывания, при этом вызывается stopPlayback, который отсылает событие “stopAnimation” по local connection каналу “AVM2toAVM1″. AS2-мувик получает событие и вызывается обработчик stopAnimation, который приказывает мувиклипу animation_mc остановиться.

Категория: ActionScript 3 — «100 советов» Ярлыки: ,

Смотрите также

Класс Timer Класс ByteArray
  1. Алекс
    August 31st, 2010 at 17:58 | #1

    а можно примерчик с двумя AS3 файлами?

  1. Пока нету.