当鼠标没有出来时调度鼠标输出事件

时间:2015-06-01 10:24:30

标签: actionscript-3 events tooltip mouseevent mouseover

我创建了一个工具提示类。 当鼠标悬停在MovieClip上时,它会启用,当它出来时它会禁用。 movieclip包含一些其他的动画片段。 我的代码是:

to.addEventListener(MouseEvent.MOUSE_OVER, showTip);
to.addEventListener(MouseEvent.MOUSE_OUT, hideTip);
to.addEventListener(MouseEvent.MOUSE_MOVE, MoveTip);

,功能是:

private function showTip(evt: MouseEvent) {
        if (tip != null && !tip.visible) {
            tip.x = evt.stageX;
            tip.y = evt.stageY;
            tip.visible = true;
        }
    }

    private function hideTip(evt: MouseEvent) {
        if (tip != null && tip.visible) {
            tip.visible = false;
        }
    }

    private function MoveTip(evt: MouseEvent) {
        if (tip != null && tip.visible) {
            tip.x = evt.stageX;
            tip.y = evt.stageY;
        }

    }

它的工作,但有时hideTip函数和showTip函数同时启用,并且提示闪烁。

3 个答案:

答案 0 :(得分:0)

显然,您的工具提示模糊了底层to动画片段,从而有效地让Flash认为鼠标不在to MC中,从而触发鼠标输出侦听器。一种可能的解决方案是将tip从鼠标光标移开,而不是将其显示在鼠标位置的顶部。

const offsetX:Number=4;
const offsetY:Number=4; // experiment with these  
private function showTip(evt: MouseEvent) {
    if (tip != null && !tip.visible) {
        tip.x = evt.stageX+offsetX;
        tip.y = evt.stageY+offsetY;
        tip.visible = true;
    }
}

private function MoveTip(evt: MouseEvent) {
    if (tip != null && tip.visible) {
        tip.x = evt.stageX+offsetX;
        tip.y = evt.stageY+offsetY;
    }

}

答案 1 :(得分:0)

尝试使用

to.addEventListener(MouseEvent.ROLL_OVER, showTip);
to.addEventListener(MouseEvent.ROLL_OUT, hideTip);

如果鼠标改变,例如,这就避免了调度事件的问题。在一个区域内或在相同工具提示目标的子项之间的字母和透明度之间,应该完全具有一个工具提示。 Sry我的英语。希望能帮助到你。问候

答案 2 :(得分:0)

正如@BotMaster和@Vesper建议的那样,tip显示在鼠标下方,这会导致MouseEvent.MOUSE_OUT触发。

为防止这种情况,请执行以下操作:

tip.mouseEnabled = false;
tip.mouseChildren = false;