鼠标不在对象上时如何使文本消失?

时间:2013-12-12 20:26:13

标签: actionscript-3 flash mousemove

我有对象,当鼠标悬停在它们上面时会显示文本。我为此使用了MOUSE_MOVE事件。问题是当鼠标离开对象时,文本保持在最后位置。我希望它消失,直到鼠标再次触摸物体的那一刻。怎么做?

这是我编辑过的代码。我发现MOUSE_OUT或ROLL_OUT效果很好。现在唯一的问题是,当我在对象和文本显示时,当我在文本上快速移动鼠标时,它会闪烁。我认为这是因为文本在对象上,当我在文本上时,我不再在对象上了。所以我只是将文本从光标移开一点。谢谢你的回答:)

import flash.events.MouseEvent;
import inventory.inventorySystem;
import inventory.item;
import flash.text.TextField;

var IS:inventorySystem;
var IT:item;

apple.itemName = "Apple";
apple.itemIcon = new AppleIcon();
apple.addEventListener(MouseEvent.MOUSE_MOVE, showItemNameF);
apple.addEventListener(MouseEvent.MOUSE_OUT, hideItemNameF);

pear.itemName = "Pear";
pear.itemIcon = new PearIcon();
pear.addEventListener(MouseEvent.MOUSE_MOVE, showItemNameF);
pear.addEventListener(MouseEvent.MOUSE_OUT, hideItemNameF);

function showItemNameF(e:MouseEvent):void{
    var itemNameBox:String;
    itemNameBox = item(e.currentTarget).itemName;
    stage.addChild(infoBoxObject);
    infoBoxObject.infoBox.text = itemNameBox;
    infoBoxObject.x = mouseX;
    infoBoxObject.y = mouseY;
}

function hideItemNameF(e:MouseEvent):void{
    infoBoxObject.x = -145;
    infoBoxObject.y = 61;
}

2 个答案:

答案 0 :(得分:0)

只需将Enabled设置为false,然后启用MouseOver-Event即可。

答案 1 :(得分:0)

如果您正在使用MOUSE_MOVE事件,请注意此事件会在移动鼠标时不断触发。在某些情况下,如果您对此事件执行了很多逻辑,这可能会导致您的应用速度变慢。 (只是旁注)

如果您使用的是MOUSE_MOVE,则可以使用hitTestObject()来检查您是否正在触摸文本容器(有很多示例可以找到如何实现此目的)。

最好在文本容器上使用鼠标输入和鼠标离开事件。

如需更多帮助,您需要提供一些代码示例。