2010-07-06 5 views
0

Я создаю контейнер flex 4 для скрипта действия 2 флэш-приложения. Я использую компонент <mx:SWFLoader>, чтобы загрузить игру.flex 4: swfloader as2 game, могу ли я поймать customevent, который был отправлен с использованием mx.events.EventDispatcher?

Я знаю, что я могу захватывать события или даже настраиваемые события из приложения сценария действия 3.

работает пример действия сценария 3 (не 2):

<?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" creationComplete="init()"> 
<fx:Script> 
    <![CDATA[ 
     import mx.controls.Alert; 

     import Red5Event; 


     private function handleRed5Event(e:Red5Event):void { 
      Alert.show("yay"); 
     } 

     private function init():void { 

       this.fileSwf.content.addEventListener(Red5Event.CONTROL_TYPE 
                ,handleRed5Event); 
     } 

    ]]> 
</fx:Script> 
    <mx:SWFLoader id="fileSwf" source="file.swf" /> 
</s:Application> 

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

я понял, что с помощью AS2 я могу направить пользовательские события, используя следующий пример:

import mx.events.EventDispatcher; 

class Sender { 

    // these three lines are needed to use EventDispatcher 
    public var addEventListener:Function; 
    public var removeEventListener:Function; 
    public var dispatchEvent:Function; 


    public function Sender() { 
     // this line must be in the constructor of the class 
     EventDispatcher.initialize(this); 

     // dispatch an event once per second 

    } 

    public function sendEvent():Void { 
     dispatchEvent({type:"xpoControl"});  
     trace("event sent!"); 
    } 
} 

может я как-то направить событие в действие сценарий 2 флэш-приложение, которое контейнер прогибается 4 будет в состоянии поймать?

спасибо!

+0

после большого чтения .. то, что я прошу не возможно. – ufk

ответ

1

после многого чтения .., что я запрос может быть невозможен.

На самом деле, есть рабочие места. Вы правы в том, что способ, которым вы пытаетесь достичь этого, на самом деле невозможен из-за ограничений безопасности. Однако вы можете создать то, что мне нравится называть маршаллером-адаптером через класс LocalConnection. Вам нужно будет иметь метод в AS2, который использует localConnection для связи со стороной flex 4. Вам придется использовать простые типы и передавать свойства вашего Red5Event в более общем виде, но вы должны быть в состоянии выполнить то, что вам нужно, с помощью своего настраиваемого «маршаллера-адаптера».

удачи, Джереми

+0

Благодарю вас за ваш совет. Я пытаюсь найти другой способ, кроме LocalConnection, для связи между двумя приложениями. Я работал с LocalConnection в прошлом, и я разочаровался. много раз возникала проблема с созданием локального соединения. я буду использовать его, если это единственный способ, я просто надеюсь, что это не так :) – ufk

+0

Я приму этот ответ, потому что он кажется единственным решением связи между as2 и as3. – ufk