忽略工具提示上的鼠标焦点



我已经在我的Flex应用程序中创建了一个类似工具提示的东西。当滚动到某个项目呈现器时,会弹出一个新控件,对其进行定位,并在滚动时将其删除。操作顺序如下:

  1. 翻转事件处理程序被触发。
  2. 将工具提示添加到this.systemManager.topLevelSystemManager.toolTipChildren.
  3. 在我的工具提示创建完成后,设置工具提示的x, y坐标(在创建完成后,宽度和高度被计算,因为它们是动态的)。
  4. 滚出事件处理程序触发。
  5. 删除提示。

当我将x和y坐标设置为从当前鼠标位置的x+10, y+10时,这工作得很好。我想添加一些东西来重新定位工具提示,如果它将被部分地画出屏幕。我添加了一个步骤来计算它是否会被移出屏幕,并重新定位工具提示,如果它将被切断。

我的解决方案的问题似乎是,它现在运行在一个无限循环的重绘,因为在鼠标下面的屏幕上添加工具提示触发了项目渲染器上的"rollOut"。这将触发工具提示的删除,并从1开始重新开始该过程。

所以我想我的问题是:有没有办法忽略工具提示,所以它不会把鼠标的焦点从现在在它下面的项目渲染器?或者有其他好的解决方案吗?

一种方法是确保绘制的工具提示也不在鼠标下方。

或者您可以在工具提示在rollOut之后淡出之前添加一个短暂的延迟。然后,如果触发了新工具提示的mouse_over,则可以禁用淡出。

这样,只有当鼠标同时离开触发工具提示的DisplayObject和工具提示时,工具提示才会淡出。

可能应该在发布这个问题之前搜索更多。对于其他人来说,我只需要在我的工具提示上设置mouseEnabled=falsemouseChildren=false选项。

我会检查你的事件的 currentttarget target属性,知道是谁发送的

最新更新