2010-07-06 12 views
0

Je construis un conteneur flex 4 pour le script d'action 2 applications flash. J'utilise le composant <mx:SWFLoader> pour charger la partie. Je sais que je peux attraper des événements ou même des événements personnalisés à partir d'une application script d'action 3flex 4: swfloader as2 jeu, puis-je attraper un customevent qui a été envoyé en utilisant mx.events.EventDispatcher?

exemple de travail pour le script d'action 3 (non 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> 

puis dans l'application flash i étendre la classe d'événements, en ajoutant le type de contrôle approprié et la mise en bubbles true, donc chaque fois que j'expedie un événement , il est probablement attrapé par l'application flexible.

Je compris que l'utilisation AS2 je peux envoyer des événements personnalisés en utilisant l'exemple suivant:

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!"); 
    } 
} 

puis-je envoyer en quelque sorte un événement dans l'application flash action script 2 que le conteneur flexible 4 sera en mesure de prendre?

merci!

+0

après beaucoup de lecture .. ce que je demande ne peut pas être possible. – ufk

Répondre

1

après beaucoup de lecture .. ce que je demande peut ne pas être possible.

En fait, il existe des solutions de rechange. Vous avez raison de dire que la façon dont vous essayez d'accomplir cela n'est pas vraiment possible en raison des restrictions de sécurité. Cependant, vous pouvez créer ce que j'aime appeler un adaptateur marshaller via la classe LocalConnection. Vous aurez besoin d'une méthode dans AS2 qui utilise un localConnection pour communiquer avec le côté flex 4. Vous devrez utiliser des types simples et passer les propriétés de votre Red5Event plus génériquement, mais vous devriez être capable d'accomplir ce dont vous avez besoin avec votre 'adaptateur marshaller' personnalisé.

Bonne chance, Jeremy

+0

merci pour vos conseils. J'essaie de trouver un autre moyen en plus de LocalConnection pour communiquer entre les deux applications. J'ai déjà travaillé avec LocalConnection et j'ai été déçu. plusieurs fois il y avait un problème pour créer la connexion locale. Je vais l'utiliser si c'est le seul moyen, j'espère juste que ce n'est pas :) – ufk

+0

J'accepte cette réponse car elle semble être la seule solution de communication entre as2 et as3. – ufk