0

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

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

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

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

    <s:Button x="118" y="60" label="Change em" click="button1_clickHandler(event)" rollOver="button1_rollOverHandler(event)" mouseOver="ui_suppressHover(event)"/>

4

2 回答 2

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“如果”。

于 2010-10-28T06:35:56.653 回答
1

这是由Maxim的回答激发的部分解决方案。您可以通过扩展 Button 并按如下方式覆盖来创建 HoverlessButton 类:

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

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

于 2010-10-28T22:21:58.540 回答