LocalConnection: общение между flex 4.1 и flash as2 - PullRequest
0 голосов
/ 29 июля 2010

Я пытаюсь установить связь между приложением flex 4.1 и приложением сценария флэш-действия 2 с помощью LocalConnection.

приложение флэш-памяти

содержит кнопку btn01 и следующий код:

var a:LocalConnection = new LocalConnection();

btn01.onPress = function() {
 trace("button clicked");
 a.send("abcde","test");
}

вы можете видеть здесь, что он отправляет тестовую команду соединению с именем 'abcde'.

flex application

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"     minHeight="600" initialize="init()">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[
        import mx.controls.Alert;

        private function init():void {
            var a:LocalConnection = new LocalConnection();
            a.client=this;
            a.connect("abcde");
        }

        public function test():void {
            Alert.show("test");
        }
]]>
</fx:Script>
<mx:SWFLoader source="/location/as2-flash-file.swf" />

как выМожно видеть, что в приложении Flex я подключаюсь к LocalConnection с именем «abcde» и устанавливаю для клиента значение «this», что означает, что все общедоступные функции могут выполняться из LocalConnection.

элемент SWFLoader загружает as2флеш файл.

всякий раз, когда я нажимаю кнопку, я вижу сообщение трассировки, но функциональный тест не выполняется в приложении flex.какие-нибудь идеи?

обновление

оба приложения находятся в одном домене, фактически на локальном, так что нет необходимости использовать allowDomain, и оба приложения работают в Интернете.

Ответы [ 2 ]

1 голос
/ 01 августа 2010

Я создал переменную LocalConnection в области действия init (), поэтому, когда функция завершилась, локальное соединение было уничтожено. решение состоит в том, чтобы просто объявить переменную вне функции init.

public var a:LocalConnection;

private function init():void {
        a = new LocalConnection();
        a.client=this;
        a.connect("abcde");
    }
1 голос
/ 30 июля 2010

Документация говорит, что локальные соединения AS2 и AS3 не должны связываться без проблем.

Вам нужно изучить метод allowDomain ?Вам нужно поместить файл crossdomain.xml на место?Если у вас есть SWF-файлы в двух разных доменах, обратите особое внимание на документацию по методу отправки, поскольку вам необходимо добавить дополнительную информацию к имени подключения метода send .

Они оба браузерыоснованные приложения?Я не смотрю в AIR

...