首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Event.MOUSE_LEAVE不在AS3工作

Event.MOUSE_LEAVE不在AS3工作
EN

Stack Overflow用户
提问于 2010-04-07 21:15:05
回答 2查看 5.2K关注 0票数 3

我只是把这个超级简单的代码示例抛到了Flash框架脚本中,但是它没有在控制台中输出任何内容。我只是把鼠标滚动到窗口上,没有点击任何东西,什么也没发生。为什么这不能像我预期的那样起作用?

代码语言:javascript
运行
复制
stage.addEventListener(Event.MOUSE_LEAVE, traceMouse);

function traceMouse(Evt:Event):void
 {
 trace("Mouse Left Stage");
 }

________________________________________________

编辑我发现Event.MOUSE_LEAVE极其无用。首先,它不能在测试环境中工作(至少在Mac的Flash上)。其次,如果MouseEvent.MOUSE_DOWN当前处于活动状态,则不会触发:

Flash CS4 Professional ActionScript 3.0语言参考资料:

更新8/11/09:添加的限定条件是在按下按钮时不触发该事件。1

在我的特殊情况下,我希望在拖动对象时触发MOUSE_LEAVE,以便在用户将鼠标指针拖出舞台时触发stopDrag()。因为这是不可能的,所以我决定在实际的对象上使用MOUSE_OUT,而不是在对象的父级或阶段上使用MOUSE_LEAVE。

代码语言:javascript
运行
复制
 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();
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-07 21:20:04

我不认为这个特定事件在创作环境中有效,请尝试发布html包装并在浏览器中运行它。

票数 1
EN

Stack Overflow用户

发布于 2011-05-18 19:57:45

在浏览器中运行时,还需要知道另外几件棘手的事情:

奇怪的是,在Chrome + Firefox中,MOUSE_LEAVE事件不会被发送到WMODE of OPAQUETRANSPARENT。它只是不开火-鼠标向下或向上。

对于WINDOW,它工作得很好。那个花了我很长时间才发现的!老爹..。http://bugs.adobe.com/jira/browse/FP-892

其次,确保使用Event作为Event.MOUSE_LEAVE处理程序的参数类型,而不是MouseEvent。如果您尝试使用MOUSE_LEAVE处理e:MouseEvent,您将得到一个您可能看不到的错误(除非您使用的是调试闪存)。这是一个很容易犯的错误,因为您可能将所有其他处理程序指向相同的方法。

下面是我所做的工作:(只需从mouseLeave(e:Event)调用我的主mouseLeave(e:Event)

代码语言:javascript
运行
复制
stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(Event.DEACTIVATE, endDrag);
stage.addEventListener(Event.MOUSE_LEAVE, mouseLeave);

private function mouseLeave(e:Event):void
{
    endDrag(new MouseEvent("MOUSE_LEAVE"));
}

public function endDrag(evt:MouseEvent):void
{
    /// handle end drag
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2595995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档