我在我的MovieClip中添加了一个MOUSE_OVER事件监听器,然后我就像这样添加了MOUSE_OUT:
mc.addEventListener(MouseEvent.MOUSE_OVER, boxItemMouseOver, false, 0, true);
protected function boxItemMouseOver(e:MouseEvent):void
{
trace("mouse over");
var boxItem:MovieClip = e.currentTarget as MovieClip;
boxItem.addEventListener(MouseEvent.MOUSE_OUT, boxItemMouseOut, false, 0, true);
boxItem.removeEventListener(MouseEvent.MOUSE_OVER, boxItemMouseOver);
}
protected function boxItemMouseOut(e:MouseEvent):void
{
trace("mouse out");
var boxItem:MovieClip = e.currentTarget as MovieClip;
boxItem.addEventListener(MouseEvent.MOUSE_OVER, boxItemMouseOver, false, 0, true);
boxItem.removeEventListener(MouseEvent.MOUSE_OUT, boxItemMouseOut);
}
但每当我在MovieClip中移动鼠标时,都会调用MOUSE_OUT事件函数,尽管我仍然没有离开MovieClip占用的区域。
我设法找出我的问题在哪里,但仍然无法修复它,我在我的SWF中添加了一个替换鼠标图标的光标(我隐藏了鼠标),一旦我添加它出现问题,这是一个简单的例子。
答案 0 :(得分:2)
在mouseChildren
上将boxItem
设为false。
答案 1 :(得分:1)
1 .. 你有跟踪("鼠标悬停")'在这两个功能中 2 .. 首先将鼠标移到侦听器上,而不是将鼠标移出侦听器 3 .. 我不明白,为什么你需要声明新的变量' boxItem'什么时候你可以写e.target.removeEventListener(..) 4 .. 你在说什么是不可能的,我在几行中找到了几个不必要的代码,所以很有可能你在你的代码中做了一些错误,向我们展示了你的更大的一部分代码..
P.S。另外,将mouseEnabled与mouseChildren一起尝试为false,但我怀疑它是否可行
答案 2 :(得分:0)
改为倾听ROLL_OUT
。当光标离开您MOUSE_OUT
的任何嵌套chidlren时,将调度MovieClip
。