翻转并在按钮上滚动

时间:2009-08-27 00:40:23

标签: flex actionscript-3 mxml

我的flex应用程序中有两个按钮彼此相邻,ButtonA和ButtonB。 当用户在两个按钮中的任何一个上滚动鼠标时,我希望滚动皮肤(overSkin)显示在两个按钮上,即按钮A和按钮B. 当用户滚动按钮B时,我尝试使用它来执行此操作:

ButtonA.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER));

然后当用户推出按钮B时,我执行:

ButtonA.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT));

按钮当用户滚入/滚出时,我无法在按钮A上执行相同的操作。它会导致无限循环,导致堆栈溢出。

还有其他办法吗?

1 个答案:

答案 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))
}

另外,请查看这些按钮上的文档;您可以通过直接检查按钮的翻转状态来避免引入额外的变量。