Apache flex 从从EventDispatcher继承的类中分派事件

Apache flex 从从EventDispatcher继承的类中分派事件,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,我有一个扩展EventDispatcher的类 我想做的是在单击组件时调度click事件。该类本质上是文本字段中的一些文本,需要能够执行某些操作,并且需要能够响应单击。听起来很简单。。。我希望在单击该部分文本时发送事件。但是,怎么做?这不像是一个我可以直接去的按钮 myButton.addEventListener(MouseEvent.CLICK, myClickHandler); 这很清楚,因为当单击myButton时,某些组件将侦听调度的Click事件。它内置于AS3框架中,按钮知道如何

我有一个扩展EventDispatcher的类

我想做的是在单击组件时调度click事件。该类本质上是文本字段中的一些文本,需要能够执行某些操作,并且需要能够响应单击。听起来很简单。。。我希望在单击该部分文本时发送事件。但是,怎么做?这不像是一个我可以直接去的按钮

myButton.addEventListener(MouseEvent.CLICK, myClickHandler);
这很清楚,因为当单击myButton时,某些组件将侦听调度的Click事件。它内置于AS3框架中,按钮知道如何侦听单击事件

在导入语句之后,我得到:

[Event(name="click" type="mx.events.Event")]

当组件被单击时,当组件还不知道如何响应单击事件时,如何调度事件?我已尝试在包含此自定义文本类的textfield中添加事件侦听器,但由于尚未调度Click事件,因此没有发生任何事情。

您可以创建自己的Click事件并调度它。您还可以在没有用户单击过的对象上发送单击:D

试试这个:

var mEvent:MouseEvent = new MouseEvent(MouseEvent.CLICK, [HERE MORE PARAMS BY YOU]);
yourObject.dispatchEvent(mEvent);

现在,您将从对象接收单击事件。

假设您的类由TextField组成。然后

好的,我在构造函数中尝试了这个:

public function YourClass():void { //Constructor
{
//intialize Something 
//initialize tf
tf.addEventListener(MouseEvent.CLICK, onClick);
...
}
...
private function onClick(e:MouseEvent):void {
  this.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
    var mEvent:MouseEvent = new MouseEvent(MouseEvent.CLICK, true, false);
this.dispatchEvent(mEvent);
然后,在包含文本字段中,在遍历这些对象(每个对象都称为cp)时,我执行了以下操作:

                cp.addEventListener(MouseEvent.CLICK, mouseClickHandler);
最后,mouseClickHandler:

    private function mouseClickHandler(event:MouseEvent):void 
    {
        trace("Clicked!!!!!!!!!!!");
    }

在调试模式下运行,我得到nada。努卡。尼恩特。胡说八道。也就是说:没有被点击的痕迹。我做错什么了吗?

Thnks,但是类不是textfield,而是包含在textfield中。不过,我确实在文本字段中设置了侦听器和处理程序,我认为这就是你所说的,我认为这是正确的。它就是不起作用。你能提供一些你班上的代码吗?可能是骨架您通常不应该在构造函数中分派事件,因为它们不能被监听-它们只有在构造函数完成后才可寻址。