Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Event.MOUSE\u离开时不在AS3中工作_Actionscript 3_Mouseevent - Fatal编程技术网

Actionscript 3 Event.MOUSE\u离开时不在AS3中工作

Actionscript 3 Event.MOUSE\u离开时不在AS3中工作,actionscript-3,mouseevent,Actionscript 3,Mouseevent,我刚刚将这个超级简单的代码示例扔进了一个Flash CS4 IDE框架脚本,但它在控制台中没有输出任何内容。我只是在窗口上滚动鼠标,没有点击任何东西,什么也没有发生。为什么这不能像我期望的那样工作 stage.addEventListener(Event.MOUSE_LEAVE, traceMouse); function traceMouse(Evt:Event):void { trace("Mouse Left Stage"); } \Uuuuuuuuuuuuuuuuuuuuuuu

我刚刚将这个超级简单的代码示例扔进了一个Flash CS4 IDE框架脚本,但它在控制台中没有输出任何内容。我只是在窗口上滚动鼠标,没有点击任何东西,什么也没有发生。为什么这不能像我期望的那样工作

stage.addEventListener(Event.MOUSE_LEAVE, traceMouse);

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

[编辑]我发现Event.MOUSE\u的离开毫无用处。首先,它在测试环境中不起作用(至少在MacOSX的FlashCS4上是这样)。其次,如果MouseEvent.MOUSE_DOWN当前处于活动状态,则不会触发:

Flash CS4 Professional ActionScript 3.0语言参考:

更新日期:2009年8月11日:新增资格 按下按钮时不会触发该事件 按

在我的特殊情况下,我希望鼠标在拖动对象时能够启动,这样,如果用户将鼠标指针从舞台上拖下来,它就会启动stopDrag()。由于这是不可能的,我决定在实际对象上使用鼠标离开,而不是在对象的父对象或舞台上使用鼠标离开

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

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

以下是一些需要了解的其他技巧(在浏览器中运行时):

一件奇怪的事情是,在Chrome+Firefox中,鼠标离开事件没有被调度为
不透明
透明
。它只是不点火-鼠标向下或向上

使用
窗口
它可以正常工作。我花了很长时间才弄明白!grr


第二,确保对
事件的参数类型使用
Event
。鼠标离开
处理程序,而不是
MouseEvent
。如果您试图用
e:MouseEvent
处理
MOUSE\u LEAVE
,您将得到一个可能永远看不到的错误(除非您使用的是调试flash播放器)。这是一个非常容易犯的错误,因为您可能将所有其他处理程序指向同一个方法

下面是我要做的:(只需从
mouseLeave(e:Event)


在发布之前,我在谷歌上搜索了这一期。似乎有些人无法让它与IDE协同工作,而其他人则认为他们疯了,它对他们有效。这可能是一种设置吗?是的,它在浏览器中发布时对我有效。它可能依赖于操作系统或其他什么,我尽可能远离c的flash创作ode类型的东西,所以我从来没有真正遇到过。这是一个聪明的理论。如果你是正确的,我不会感到惊讶,因为MouseEvent.MOUSE_WHEEL在Mac OS X上根本不工作(这就是我正在使用的),它在Flash CS4 IDE中为我工作(Win XP)但事实上,当鼠标被按下时它就不工作了,这让它完全没有用。Adobe最近真的让我很恼火。顺便说一句,你在哪里找到了这张便条?这个链接不起作用。它写在Flash 10.1的10.0文档中,位于Flash.display.Stage.mouseLeave下,但他们似乎已经把它删除了。@1978年的马克我意识到你没有做这个链接第二个错误在这里-但我总是忘记这一点,很容易错过
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
}