在MovieClip中调用MOUSE OUT

时间:2016-02-03 14:50:56

标签: actionscript-3 flash addeventlistener movieclip

我在我的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中添加了一个替换鼠标图标的光标(我隐藏了鼠标),一旦我添加它出现问题,这是一个简单的例子。

代码:Simple Source Code, Couple of classes

3 个答案:

答案 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