2009-11-19 5 views
1

J'ai un projet simple Flex3 avec et fichier MXML (avec certains comme l'intérieur de celui-ci) et FMSConnection.asAction Script 3 question de conception du code

J'ai quelque chose comme ça

public class FMSConnection extends NetConnection 
{ 
    //this methods is called from the media server 
    public function Message(message:String):void 
    { 
     //how to display (add it to a textarea) this message, when this method is invoked ?  
    } 
} 

Répondre

3
//in the mxml, after FMSConnection is created: 
fmsConn.addEventListener(FMSConnection.MESSAGE_RECEIVED, onMessage); 

private function onMessage(e:Event):void 
{ 
    fmsConn = FMSConnection(e.target); 
    textArea.text += fmsConn.lastMessage; 
} 

//FMSConnection 
public class FMSConnection extends NetConnection 
{ 
    public static const MESSAGE_RECEIVED:String = "messageReceived"; 

    public var lastMessage:String; 

    public function Message(message:String):void 
    { 
     lastMessage = message; 
     dispatchEvent(new Event(MESSAGE_RECEIVED)); 
    } 
} 

Au lieu de déclarer la variable lastMessage, vous pouvez envoyer un événement personnalisé et y stocker le message si vous le souhaitez.

//MsgEvent.as 
public class MsgEvent extends Event 
{ 
    public static const MESSAGE_RECEIVED:String = "messageReceived"; 
    public var message:String; 
    public function MsgEvent(message:String, type:String) 
    { 
     super(type); 
     this.message = message; 
    } 
    override public function clone():Event 
    { 
     return new MsgEvent(message, type); 
    } 
} 

//in the mxml, after FMSConnection is created: 
fmsConn.addEventListener(MsgEvent.MESSAGE_RECEIVED, onMessage); 

private function onMessage(e:MsgEvent):void 
{ 
    textArea.text += e.message; 
} 

//FMSConnection 
public class FMSConnection extends NetConnection 
{ 
    public function Message(message:String):void 
    { 
     dispatchEvent(new MsgEvent(message, MsgEvent.MESSAGE_RECEIVED)); 
    } 
} 

Redéfinition de la méthode clone n'est pas nécessaire dans ce cas, mais il est une bonne pratique à suivre lors de l'utilisation des événements personnalisés. Si vous ne remplacez pas la méthode clone, vous obtiendrez une erreur d'exécution lors de la tentative de redispatching de l'événement personnalisé à partir du gestionnaire d'événements.

+0

pouvez-vous me montrer comment créer et envoyer un événement personnalisé – Omu

+1

Mise à jour de la publication - Corrigé également une erreur mineure dans le code que j'ai posté en premier - le type d'événement dans onMessage devrait être simple Événement plutôt que MessageEvent . – Amarghosh

+0

thnx homme, ça marche vraiment bien, trucs géniaux !!! – Omu