我的flex应用程序中有两个按钮彼此相邻,ButtonA和ButtonB。 当用户在两个按钮中的任何一个上滚动鼠标时,我希望滚动皮肤(overSkin)显示在两个按钮上,即按钮A和按钮B. 当用户滚动按钮B时,我尝试使用它来执行此操作:
ButtonA.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER));
然后当用户推出按钮B时,我执行:
ButtonA.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT));
按钮当用户滚入/滚出时,我无法在按钮A上执行相同的操作。它会导致无限循环,导致堆栈溢出。
还有其他办法吗?
答案 0 :(得分:1)
使用额外变量显式控制递归。对于按钮A中的翻转:
if(!rolledIntoButtons) {
rolledIntoButtons = true
ButtonB.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER))
}
...在按钮B中向后移动相同的内容。然后在按钮A中滚动:
if(rolledIntoButtons) {
rolledIntoButtons = false
ButtonB.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT))
}
另外,请查看这些按钮上的文档;您可以通过直接检查按钮的翻转状态来避免引入额外的变量。