如何在Spark组件上全局删除hover / rollOver效果?

时间:2010-10-28 01:48:21

标签: flex touch flex4 flex-spark

我的目标是从UI中删除所有悬停反馈。其动机是测试触摸界面原型,并且当鼠标悬停在触摸界面时不会让用户拥有交互队列。

我有部分解决方案,但它有两个问题:

  1. 每个组件都需要一个事件处理程序。
  2. 悬停时闪烁。

        protected function ui_suppressHover(event:MouseEvent):void
        {
            var b = event.currentTarget as UIComponent;
            b.skin.currentState = "up";
        }
    

    < s:按钮x =“118”y =“60”label =“更改em”click =“button1_clickHandler(event)”rollOver =“button1_rollOverHandler(event)”mouseOver =“ui_suppressHover(event)”/&gt

2 个答案:

答案 0 :(得分:2)

最好覆盖getCurrentSkinState,例如见spark Button.as

override protected function getCurrentSkinState():String
{
    if (!enabled)
        return "disabled";

    if (isDown())
        return "down";

    if (hovered || mouseCaptured)
        return "over";

    return "up";
}

所以只需删除hovered || mouseCaptured“if”。

答案 1 :(得分:1)

这是Maxim的答案所激发的部分解决方案。你可以通过扩展Button和覆盖来创建一个HoverlessButton类:

override protected function getCurrentSkinState():String
{               
    var state:String = super.getCurrentSkinState();
    if (state == "over")
        state = "up";
    return state;
}

你必须首先调用super impl,因为它是唯一可以正确检查isDown()的,它是私有的。