Взаимодействие между Flex и Flash
Взаимодействие между 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