Пользовательский объект Flash / Flex Event - PullRequest
0 голосов
/ 23 июня 2011

Я в проекте приложения Flex Mobile.Мне нужно отправить событие в FlexGlobals.topLevelApplication, и оно должно содержать пользовательское сообщение.

Я пытаюсь создать объект и отправить его следующим образом:

//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 Object@5a507911 to flash.events.Event.

Я также попытался поместить это в нижнюю частьосновного приложения mxml, где я создал событие;

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

Не могу найти пример, демонстрирующий то, что я пытаюсь сделать.Любые идеи, как я могу заставить это работать?

Ответы [ 2 ]

1 голос
/ 23 июня 2011

dispatchEvent занимает Event

Создайте свой собственный класс, который расширяет Event, а затем отправьте его.

Посмотрите на эту статью обсуждается, как отправить пользовательское событие.

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

Из приложения topLevelApplication убедитесь, что вы прослушиваете то же событие.*

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

В receiveMsgHandler возьмите объект типа MyOwnEvent.

protected function receiveMsgHandler(event:MyOwnEvent):void
{
    trace(event.name);
    trace(event.message);
}
0 голосов
/ 23 июня 2011

dispachEvent() принимает только объект Event.Вам нужно будет создать свой собственный класс ReceivedObjMsg.

Подробности создания собственного класса в ответе на ваш предыдущий вопрос .

в основном здесь:

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

FlexGlobals.topLevelApplication.dispatchEvent(receivedObjMsg);

Разбор Object через dispatchEvent()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...