0

アプリケーションで特定のアクションが発生した後、スキン ボタンがデフォルトのスキンに戻るという問題があります。以下に、問題を観察できる部分的なスクリーンショットを含めました。

ここに画像の説明を入力

左ボタンをクリックすると、デフォルトのスキンに戻ります (クリックによって状態遷移がトリガーされます)。右のボタンは、デフォルトのスキン ボタンです。マウスが左ボタンの上にも押されていないことに注意してください。

ボタン スキンのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<fx:Metadata>
    <![CDATA[ 
        [HostComponent("spark.components.Button")]
    ]]>
</fx:Metadata>

<fx:Script fb:purpose="styling">
    <![CDATA[         
        import spark.components.Group;

        static private const exclusions:Array = ["labelDisplay"];

        override public function get colorizeExclusions():Array {return exclusions;}

        override protected function initializationComplete():void
        {
            useChromeColor = true;
            super.initializationComplete();
        }            
    ]]>        
</fx:Script>

<s:states>
    <s:State name="up" />
    <s:State name="over" />
    <s:State name="down" />
    <s:State name="disabled" />
</s:states>

<s:Rect id="fill" left="1" right="1" top="1" bottom="1" radiusX="2">
    <s:fill>
        <s:LinearGradient rotation="270">
            <s:GradientEntry color.down="#545454"
                             color.over="#444444"
                             color="#343434"
                             alpha="0.95"/>
            <s:GradientEntry color.down="#767676"
                             color.over="#666666"
                             color="#565656"
                             alpha="0.95"/>
        </s:LinearGradient>
    </s:fill>
</s:Rect>

<s:Rect id="border" left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="3">
    <s:stroke>
        <s:SolidColorStroke id="borderStroke" weight="1" color="#343434" caps="round" joints="round" />
    </s:stroke>
</s:Rect>

<s:Label id="labelDisplay"
         textAlign="center" verticalAlign="middle" maxDisplayedLines="1" fontSize="12"
         left="10" right="10" verticalCenter="0"
         color="#FFFFFF" fontFamily="SegoeUI">
</s:Label>

問題を引き起こしているトランジションのコードは次のとおりです。

        <s:Transition fromState="State0" toState="State1">
        <s:Sequence targets="{[contacts_nocontacts, contacts_list, button_contacts, button_add, button_delete, ac_vgroup]}">
            <s:Parallel>
                <s:Fade target="{contacts_nocontacts}" alphaFrom="1" alphaTo="0" duration="200" />
                <s:Fade target="{contacts_list}" alphaFrom="1" alphaTo="0" duration="200" />
                <s:Fade target="{button_add}" alphaFrom="1" alphaTo="0" duration="200" />
                <s:Fade target="{button_delete}" alphaFrom="1" alphaTo="0" duration="200" />
            </s:Parallel>
            <s:RemoveAction targets="{[contacts_nocontacts, contacts_list, button_add, button_delete]}" />
            <s:AddAction targets="{[button_contacts, ac_vgroup]}" />
            <s:Parallel>
                <s:Fade target="{button_contacts}" alphaFrom="0" alphaTo="1" duration="300" />
                <s:Fade target="{ac_vgroup}" alphaFrom="0" alphaTo="1" duration="300" />
            </s:Parallel>
        </s:Sequence>
    </s:Transition>
4

2 に答える 2

1

It looks like the skin is being set to the spark.skins.spark.DefaultButtonSkin (not to be confused with the normal Button skin - spark.skins.spark.ButtonSkin). This happens when you set emphasized="true" on the Button or that button is being used as a default Button in a Form.

See this thread for an example of how to customize the emphasized skin: http://forums.adobe.com/message/3811868

于 2011-08-25T05:21:48.010 に答える
0

問題は、 として設定されているボタンでフォーカスが失われると、スキンがリセットされることですDefault button。これは標準的な動作であり、以下に簡単な修正があります (これはスティーブンが指摘したものと同じ解決策ですが、この実際のページにある方が簡単です)

s|Button.emphasized {
    skinClass: ClassReference("MyNewButtonSkin");
}

emphasizedボタンのstyle プロパティに同じボタン skinClass をアタッチするだけです。これを最も速く行う最善の方法は、上記の CSS を使用することです。このようにして、一度にすべてのボタンをターゲットにすることができます!

于 2012-07-16T08:47:07.163 に答える