Показать сообщение отдельно
Старый 09.11.2006, 22:10
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 105  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 99. Взаимодействие между AVM2 (AS3) и AVM1 (AS2/AS1) через LocalConnection

Код 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 остановиться.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.