2011-06-23 9 views
0

私はFlex Mobileアプリケーションプロジェクトに所属しています。 FlexGlobals.topLevelApplicationにイベントをディスパッチする必要があり、カスタムメッセージが含まれている必要があります。カスタムFlash/Flexイベントオブジェクト

//create the event Object 

var receivedObjMsg:Object = new Object(); 
receivedObjMsg.name = "receivedMessage"; 
receivedObjMsg.message = messagevarhere; 

FlexGlobals.topLevelApplication.dispatchEvent(receivedObjMsg); 

をし、他のこのようなビューでこのようにそれを受け取る::私は、オブジェクトを作成しようとしています

はこのようにそれを派遣

FlexGlobals.topLevelApplication.addEventListener("receivedMessage", receiveMsgHandler); 


protected function receiveMsgHandler(event:Event):void 
{ 
trace("IT WORKED!"); 
} 

しかし、そのことは、カントと言っオブジェクトをイベントにする:

Type Coercion failed: cannot convert [email protected] to flash.events.Event. 

これもメインアプリケーションの下に入れてみましたイオンmxmlここで私はイベントを作成しました。

<fx:Metadata> 
[Event(name="receivedMessage", type="flash.events.Event")] 
</fx:Metadata> 

実際に何をしようとしているかを示す例は見つからないようです。どのように私はこれを動作させることができます任意のアイデア?

答えて

0

dispachEvent()は、Eventオブジェクトのみを受け入れます。あなた自身のクラスを作る必要がありますReceivedObjMsg

previous question of yoursの回答で独自のクラスを作成する方法の詳細。

あなたの問題は、ここでは基本的には次のとおりです。dispatchEvent()

+0

私はどこかでそれを見たことが分かっていましたが、私はそれを読んだところを覚えていませんでした。 – brybam

1

dispatchEvent

var receivedObjMsg:Object = new Object(); 
receivedObjMsg.name = "receivedMessage"; 
receivedObjMsg.message = messagevarhere; 

FlexGlobals.topLevelApplication.dispatchEvent(receivedObjMsg); 

解析ObjectEventを拡張し、その派遣を独自のクラスを作成しますEvent

をとります。

カスタムイベントのディスパッチ方法については、this articleをご覧ください。

class MyOwnEvent extends Event 
{ 
    public static const RECEIVED_EVENT:String = "receivedEvent"; 
    public string name; 
    public string message; 

    public MyOwnEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false) 
    { 

    } 

} 

そして、ディスパッチしたいとき。

var myevent:MyOwnEvent = new MyOwnEvent(MyOwnEvent.RECEIVED_EVENT); 
myevent.name = "whatever"; 
myevent.message = "another whatever"; 
FlexGlobals.topLevelApplication.dispatchEvent(myevent); 

トップレベルアプリケーションから、同じイベントを受信することを確認してください。 receiveMsgHandler

FlexGlobals.topLevelApplication.addEventListener(MyOwnEvent.RECEIVED_EVENT, receiveMsgHandler); 

タイプMyOwnEventのオブジェクトを取ります。

protected function receiveMsgHandler(event:MyOwnEvent):void 
{ 
    trace(event.name); 
    trace(event.message); 
} 
関連する問題