从继承自EventDispatcher的类中调度事件

时间:2009-11-23 21:18:53

标签: flex flash actionscript-3

我有一个扩展EventDispatcher的类。

我想要做的是在单击组件时调度click事件。 (该类基本上是文本字段中的某些文本,需要能够执行某些操作,并且它需要能够响应单击)。听起来很容易......我希望在单击该部分文本时调度该事件。但是......怎么样?它不像我可以去的按钮

myButton.addEventListener(MouseEvent.CLICK, myClickHandler);

这很清楚,因为有些组件会在单击myButton时监听调度的Click事件。它内置于AS3框架中,按钮知道如何监听点击事件。

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

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

当组件单击时,如果组件尚不知道如何响应点击事件,我该如何调度事件?我已经尝试在textfield中添加一个包含这个自定义文本类的事件监听器,但没有发生任何事情,因为尚未调度Click事件。

3 个答案:

答案 0 :(得分:0)

您可以创建自己的点击事件并发送。您也可以这样做来发送没有用户点击的对象的点击:D

试试这个:

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

现在,您将从yourObject接收Click Events。

答案 1 :(得分:0)

假设您的课程包含TextField tf。然后

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

答案 2 :(得分:0)

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

    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。 NUNCA。 NIENTE。尼坦。这就是说:没有被点击的痕迹。我做错了吗?