Apache flex 无法在flex mobile应用程序中分派自定义事件

Apache flex 无法在flex mobile应用程序中分派自定义事件,apache-flex,flex-mobile,Apache Flex,Flex Mobile,我试图从我遇到的一个例子中得到一些代码。大多数功能都可以工作,但在尝试分派自定义事件时失败。目前,试图分派事件的代码位于处理amf远程处理的类中 该示例中有一行用于调度: Application.application.dispatchEvent(new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test")); 但这失败了,因为它不知道什么是application.application“这行有多个标记: -访问未

我试图从我遇到的一个例子中得到一些代码。大多数功能都可以工作,但在尝试分派自定义事件时失败。目前,试图分派事件的代码位于处理amf远程处理的类中

该示例中有一行用于调度:

Application.application.dispatchEvent(new  
RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test"));
但这失败了,因为它不知道什么是application.application“这行有多个标记: -访问未定义的属性应用程序“

我认为这是因为这不是为移动应用程序编写的。我尝试将调度程序更改为EventDispatcher

EventDispatcher(
new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE, "worked"));
但是我得到了这个错误:

TypeError:错误#1034:类型强制失败:无法转换事件::RemoteResultEvent@18337731到flash.events.EventDispatcher

这是自定义事件RemoteResultEvent.as中的代码:

package events
{

import flash.events.Event;
public class RemoteResultEvent extends Event {

    public static var USER_UPDATE_COMPLETE:String = "UserUpdateComplete";
    public var message:String;

    public function RemoteResultEvent(eventType:String, message:String) {
        super(eventType, false, false);
        this.message = message;
    }

}
}
我在黑暗中徘徊,因为我是flex和这种类型开发的新手,所以我很可能在做一些非常愚蠢的事情。任何帮助都将受到感激

谢谢


JaChNo

您似乎对一般的事件调度感到困惑

可以在扩展EventDispatcher或具有EventDispatcher的任何Flex类中调度事件。大多数Flex组件,包括应用程序扩展EventDispatcher。若要分派活动,您已走上正确的轨道,只需执行以下操作:

dispatchEvent(new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test"));
这将从当前类中分派事件。并不是说所有的FlexUI组件,包括那些用MXML制作的组件都可以被视为一个类

您试图做的是在主级应用程序上调度事件;这是一个可怕的封装漏洞,但是可行的。您必须将其强制转换为应用程序,这样就不会得到泛型对象。像这样:

(Application.application as Application).dispatchEvent(new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test")); 
这种方法是从Flex4开始的;而您使用的是:

你没有说,但你暗示了一个事实,你正在一个移动项目中。如果是这样,我不希望mx应用程序类可用,除非您将SWCW/mx组件显式添加到类中。您必须访问Spark应用程序,它没有应用程序属性。这可能就是为什么会出现错误

请确保导入要使用的正确应用程序:

import spark.components.Application 

更多关于课堂的信息

您似乎对一般的事件调度感到困惑

可以在扩展EventDispatcher或具有EventDispatcher的任何Flex类中调度事件。大多数Flex组件,包括应用程序扩展EventDispatcher。若要分派活动,您已走上正确的轨道,只需执行以下操作:

dispatchEvent(new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test"));
这将从当前类中分派事件。并不是说所有的FlexUI组件,包括那些用MXML制作的组件都可以被视为一个类

您试图做的是在主级应用程序上调度事件;这是一个可怕的封装漏洞,但是可行的。您必须将其强制转换为应用程序,这样就不会得到泛型对象。像这样:

(Application.application as Application).dispatchEvent(new RemoteResultEvent(RemoteResultEvent.USER_UPDATE_COMPLETE,"test")); 
这种方法是从Flex4开始的;而您使用的是:

你没有说,但你暗示了一个事实,你正在一个移动项目中。如果是这样,我不希望mx应用程序类可用,除非您将SWCW/mx组件显式添加到类中。您必须访问Spark应用程序,它没有应用程序属性。这可能就是为什么会出现错误

请确保导入要使用的正确应用程序:

import spark.components.Application 

更多关于课堂的信息

您好,首先您是对的,我对事件调度感到困惑!我尝试了您展示的dispatchEvent方法,但如果要从类中调度事件,则尝试从扩展eventdispatcher?的类是否应调用“可能未定义的方法dispatchEvent”会出现错误;是,它需要扩展EventDispatcher类;或者实现IEventPatcher。您可能会从以下内容中受益:现在所有的工作都使用EventDispatcher进行了扩展。感谢您提供有关事件的链接。您好,首先您是对的,我对事件调度感到困惑!我尝试了您展示的dispatchEvent方法,但如果要从类中调度事件,则尝试从扩展eventdispatcher?的类是否应调用“可能未定义的方法dispatchEvent”会出现错误;是,它需要扩展EventDispatcher类;或者实现IEventPatcher。通读以下内容可能会使您受益:所有现在工作的人都使用EventDispatcher扩展了它。感谢您提供有关事件的链接。