Flash AS3:如何在mouse_over子精灵时阻止MouseEvent.MOUSE_OUT

mat*_*ler 3 flash actionscript-3

所有,

这是我的情况......

我的Flash应用程序的UI是一个网格.网格的每一行都是一个精灵,它包含许多响应鼠标事件的子精灵(UI控件)

网格的每一行都应该具有悬停效果 - 即,当您将鼠标悬停在该行上时,该行的背景应该会改变颜色.

这很容易实现:

rowSprite.addEventListener(MouseEvent.MOUSE_OVER, highlightRow, false, 0, true);
rowSprite.addEventListener(MouseEvent.MOUSE_OUT, unhighlightRow, false, 0, true);
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,除了当用户滚动任何行的子精灵时,行的MOUSE_OUT事件被触发,行被"取消突出显示".这不是我想要的.

换句话说-我喜欢行要不再高亮度显示,只有当你滚OUTSIDE行的,而不是当你翻转行中的某个孩子的精灵.

一个可能的解决方案:在unhighlightRow函数中,测试用户的鼠标位置是否仍然在行sprite边界内.但我猜这不是最优雅或最有效的解决方案.

这一定是一个非常普遍的问题.什么是最好的解决方案?

提前致谢!

Lar*_*sjö 7

在这种情况下,您可以使用ROLL_OVER和ROLL_OUT代替MOUSE_OVER和MOUSE_OUT:

http://kinderas.blogspot.com/2008/12/quicktip-mouseover-vs-rollover.html