【发布时间】:2011-02-05 11:06:22
【问题描述】:
我只是将这个超级简单的代码示例扔到 Flash CS4 IDE 框架脚本中,但它不会在控制台中输出任何内容。我只是在窗口上滚动鼠标,没有点击任何东西,什么也没有发生。为什么这不符合我的预期?
stage.addEventListener(Event.MOUSE_LEAVE, traceMouse);
function traceMouse(Evt:Event):void
{
trace("Mouse Left Stage");
}
________________________________________________
[EDIT] 我发现 Event.MOUSE_LEAVE 毫无用处。首先,它在测试环境中不起作用(至少在 Mac OS X 的 Flash CS4 上)。其次,如果 MouseEvent.MOUSE_DOWN 当前处于活动状态,它不会触发:
Flash CS4 Professional ActionScript 3.0 语言参考:
2009 年 8 月 11 日更新:添加了资格 按钮时不会触发该事件 按下。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();
}
【问题讨论】:
-
它适用于我的 Flash CS4 IDE (Win XP),但事实上它在按下鼠标时不起作用,这使得它完全没用。 Adobe 这些天真的很烦我。顺便说一句,你在哪里找到的笔记?那个链接失效了。
-
它是在 flash.display.Stage.mouseLeave 下的 Flash 10.1 的 10.0 文档中编写的,但他们似乎已将其删除。