我刚刚把这个超级简单的代码示例放到了Flash CS4 IDE帧脚本中,但它在控制台中没有输出任何内容。我只是在窗口上滚动鼠标,没有点击任何东西,也没有发生任何事情。为什么它不能按照我的期望工作呢?
stage.addEventListener(Event.MOUSE_LEAVE, traceMouse);
function traceMouse(Evt:Event):void
{
trace("Mouse Left Stage");
}
________________________________________________
[编辑] 我发现Event.MOUSE_LEAVE非常无用。首先,在测试环境中它不起作用(至少在Flash CS4 for Mac OS X上)。其次,如果MouseEvent.MOUSE_DOWN当前处于活动状态,则不会触发它:
Flash CS4专业版ActionScript 3.0语言参考:
更新于8/11/09:添加了限定条件,即当按钮按下时不会触发事件。1
在我的特定情况下,我希望在拖动对象时触发MOUSE_LEAVE事件,以便在用户将鼠标指针移出舞台时触发stopDrag()函数。由于这是不可能的,所以我决定在实际对象上使用MOUSE_OUT而不是在对象的父级或舞台上使用MOUSE_LEAVE。
private function mouseDownHandler(evt:MouseEvent):void
{
object.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
object.startDrag(false, pullBounds);
}
private function mouseUpHandler(evt:MouseEvent):void
{
object.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
object.stopDrag();
}
private function mouseOutHandler(evt:MouseEvent):void
{
object.stopDrag();
}