我有对象,当鼠标悬停在它们上面时会显示文本。我为此使用了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;
}
答案 0 :(得分:0)
只需将Enabled设置为false,然后启用MouseOver-Event即可。
答案 1 :(得分:0)
如果您正在使用MOUSE_MOVE事件,请注意此事件会在移动鼠标时不断触发。在某些情况下,如果您对此事件执行了很多逻辑,这可能会导致您的应用速度变慢。 (只是旁注)
如果您使用的是MOUSE_MOVE,则可以使用hitTestObject()来检查您是否正在触摸文本容器(有很多示例可以找到如何实现此目的)。
最好在文本容器上使用鼠标输入和鼠标离开事件。
如需更多帮助,您需要提供一些代码示例。