0

私の目標は、UI からすべてのホバー フィードバックを削除することです。動機は、タッチ インターフェースのプロトタイプをテストするためであり、ユーザーがマウスをホバリングしたときに、タッチ インターフェースでは得られないインタラクティブなキューをユーザーに持たせたくないということです。

部分的な解決策がありますが、2 つの問題があります。

  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したがって、 「if」を削除するだけです。

于 2010-10-28T06:35:56.653 に答える
1

マキシムの答えに拍車をかけた部分的な解決策を次に示します。Button を拡張してオーバーライドすることで、HoverlessButton クラスを作成できます。

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

プライベートな isDown() を適切にチェックできるのはスーパー impl だけであるため、最初にスーパー impl を呼び出す必要があります。

于 2010-10-28T22:21:58.540 に答える