2009-11-19 2 views

답변

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

같은 lastMessage 변수를 선언하는 대신 원하는 경우 맞춤 이벤트를 전달하고 메시지를 저장할 수 있습니다. clone 방법을 재정의

//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)); 
    } 
} 

이 경우에는 필요하지 않습니다,하지만 사용자 정의 이벤트를 사용하는 동안 수행하는 것이 좋습니다. 복제 메서드를 재정의하지 않으면 이벤트 처리기에서 사용자 지정 이벤트를 재발송하려고 시도하는 동안 런타임 오류가 발생합니다.

+0

사용자 정의 이벤트를 생성하고 디스패치하는 방법을 보여줄 수 있습니까? – Omu

+1

포스트 업데이트 - 먼저 게시 한 코드의 사소한 오류를 수정했습니다. 'onMessage'의 이벤트 유형은'MessageEvent'가 아닌 일반 'Event' 여야합니다. . – Amarghosh

+0

thnx 남자, 정말 좋은, 멋진 물건을 작동합니다! – Omu