如何“模仿”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...
答案 0 :(得分:6)
1 / 基本
在您的情况下,您可以直接致电
myMouseEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
2 / 活动
但你可以采用更加面向事件的方式来做到这一点。
eventDispatcher.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
其中eventDispatcher
是您添加听众的精灵(or something else)。
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));
这三个都可以工作!
答案 1 :(得分:0)
当您尝试访问空对象上的参数(myMouseEvent( null )
)时,Exception
调用实际上应该为您提供type
。
要正确调用它,只需创建一个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