Flash as3:如何模拟MouseEvents?

Flash as3:如何模拟MouseEvents?,flash,apache-flex,actionscript-3,air,adobe,Flash,Apache Flex,Actionscript 3,Air,Adobe,我如何“模拟”一个MouseEvent,而该不是由按钮启动的eventListener (例如,仅通过一个简单的函数调用)以及如何向其中传递变量以切换事件类型 public function myMouseEvent(event:MouseEvent):void { switch (event.type) { case "mouseDown" : trace(

我如何“模拟”一个
MouseEvent
,而该不是由按钮启动的
eventListener
(例如,仅通过一个简单的函数调用)以及如何向其中传递变量以切换
事件类型

    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...
myMouseEvent(null)
调用实际上应该会给您一个
异常
,因为您试图访问null对象上的参数(
类型

要正确调用此函数,只需创建一个MouseEvent对象以传递给函数:

// add in any other params, like localX, stageX, etc
var m:MouseEvent = new MouseEvent( MouseEvent.MOUSE_DOWN );
this.myMouseEvent( m );
或者,如果要查看事件系统,可以使用
dispatchEvent()
。差不多

this.stage.addEventListener( MouseEvent.MOUSE_DOWN, this.myMouseEvent );
this.dispatch( m ); // stage will catch this event

1/基础

你可以直接打电话

myMouseEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
2/事件

但是你可以用一种更面向事件的方式来做

eventDispatcher.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
其中
eventDispatcher
是您将侦听器添加到的精灵()

3/适当的事件

由于这样分派时无法访问的所有属性,所以有一种更简洁的方法:

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

三个都可以

你到底需要什么?您需要模拟鼠标行为吗?是的,完全正确!:)(mouseDown,mouseUp+设置event.target)您是否已经创建了自己的事件和侦听器?回答得很好。有了一些指向文档的链接,它就会完美无缺。我想还需要问一个问题:“为什么?”?为什么需要模拟鼠标事件?看起来你正试图把一开始就需要的东西拼凑在一起。