as3:如何模拟MouseEvents?

mat*_*e64 2 apache-flex air flash adobe actionscript-3

我怎么能"模拟"一个MouseEvent,即尚未通过按钮启动eventListener (例如,只是通过简单的函数调用),以及如何我可以通过变量把它切换event.types

    public function myMouseEvent(event:MouseEvent):void
    {
            switch (event.type)
            {
                case "mouseDown" :
                     trace(event.type)
                     break;

                case "mouseUp" :
                     trace(event.type)
                     break;
            }
    }

    myMouseEvent(null) // ? nothing happens...
Run Code Online (Sandbox Code Playgroud)

Kod*_*iak 6

1/基本

在您的情况下,您可以直接打电话

myMouseEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
Run Code Online (Sandbox Code Playgroud)

2/事件

但你可以采用更加面向事件的方式来做到这一点.

eventDispatcher.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
Run Code Online (Sandbox Code Playgroud)

这里eventDispatcher是Sprite(或别的东西),你加入你的监听器.

3/适当的事件

由于您在调度它时无法访问MouseEvent的所有属性,因此有一种更简洁的方法:

public function myMouseEvent(event:Event):void
{
        switch (event.type)
        {
            case "mouseDown" :
                 trace(event.type)
                 break;

            case "mouseUp" :
                 trace(event.type)
                 break;
        }
}
eventDispatcher.addEventListener(MouseEvent.MOUSE_DOWN, myMouseEvent);
eventDispatcher.dispatchEvent(new Event(MouseEvent.MOUSE_DOWN));
Run Code Online (Sandbox Code Playgroud)

这三个都可以工作!