【发布时间】:2015-06-01 10:24:29
【问题描述】:
我创建了一个工具提示类。 当鼠标悬停在 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 功能同时启用,并且提示闪烁。
【问题讨论】:
-
所有答案都很有趣,但将工具提示设置为不接收鼠标事件更容易。
-
@BotMaster 我会说它更好,而不是更容易,因为工具提示不应该是交互式设计的。但情况并非总是如此,例如,在 TD 游戏中存在“交互式”工具提示,例如塔的升级菜单,因此这种解决方案并不总是可以接受的。对于工具提示中只有文本的情况,这就足够了。
-
通常这样做:工具提示不接收鼠标事件(没有意外行为),悬停对象实现 IReceiveToolTip 接口(以验证它确实接受工具提示),该接口也应该强制执行它应该显示的文本(由接收对象实现),当工具提示显示计时器触发时,如果计时器用完并且指针仍在工具提示之上,则工具提示接收鼠标事件并接受用户输入。这是相当标准的,并且被证明可以排除意外行为。
-
@BotMaster 我必须阅读有关该界面的信息,我还没有开发自己的工具提示自行车,所以这是一些需要的数据。
标签: actionscript-3 events tooltip mouseevent mouseover