Home | Flex examples | Взаимодействие между Flex и Flash

Взаимодействие между Flex и Flash

Font size: Decrease font Enlarge font
image

Взаимодействие между Flex и Flash. Примеры взаимодействия Flex c Flash роликами, написанными как на AS3, так и на AS1 и AS2. SWF connector.

Часто бывает что нужно использовать swf файлы, скомпилированные во Flash, внутри Flex'а.

Задача такая: доступ к переменным, функциям и свойствам в ролике, загруженному при помощи Image или SWFLoader и наоборот.

1. Получить доступ к свойствам и функциям Flash ролика, скомпилированного для Flash плеера 8-й или более ранней версии (avm1, Action Script 1.0, 2.0).

2. Получить доступ к свойствам и функциям Flash ролика, скомпилированного для Flash плеера 9 версии (avm2, Action Script 3.0).

AVM1 - виртуальная машина, использующаяся во флеш плеер до 9 версии, в 9 версии используется AVM2 (также AVM1 поддерживается 9-м плеером для сохранения совместимости)

Для управления роликом, который использует 8-ю или более раннюю версию Flash плеера будем использовать класс LocalConnection. Он поможет нам осуществить доступ к методам Flash'a из Flex'а и наоборот.
Код флеш ролика:

var lc:LocalConnection = new LocalConnection();
lc.stopyellow = function( ) {
_root.stop();
}
lc.playyellow = function( ) {
_root.play();
}
lc.allowDomain("*");
lc.connect("swf8connector");

red.onRelease = function() {
var sendLC:LocalConnection = new LocalConnection();
sendLC.send( "swf2Flex", "redClick" );
}

Здесь lc.stopyellow (и т.д.) можно написать функцию, которая будет выполнять какое-то действие во флеш ролике,

lc.allowDomain("*") - обеспечивает связь между роликами с разных доменов,

lc.connect("swf8connector") - уникальное имя для связи между роликами (на текущем компьютере может быть сделано лишь одно соединение с данным именем),

sendLC.send( "swf2Flex", "redClick" ) - вызов функции redClick() из Flex'а.

Код во Flex во многом похож, при создании приложения вызовем функцию init():

private function init():void
{
lc = new LocalConnection();
toswf = new LocalConnection();
toswf.client = this;
toswf.connect('swf2Flex');
}

toswf - это LocalConnection для связи с флеш роликом.

Вызов функций из флеша:

private function stopyellow():void
{
lc.send('swf8connector', 'stopyellow');
}


Если Flash ролик использует avm2, то есть Action Script 3.0 и Flash плеер 9-й версии, то доступ к нему получить очень просто:
MovieClip(myswf.content) - далее может получить доступ к любому свойству и метода этого клипа

//из примера
private function changeText():void
{
MovieClip(blueswf.content).blue.astext.text = btext.text;
}

 

При написании использована статья http://kb.adobe.com/selfservice/viewContent.do?externalId=749eaa47

Исходники - source flex, source flash,  приложение - application

Comments ( posted):

Post your comment comment

Please enter the code you see in the image:

  • email Email to a friend
  • print Print version
  • Plain text Plain text
Tags
No tags for this article
Rate this article
5.00