Скины кнопок Flex возвращаются к значениям по умолчанию - PullRequest
0 голосов
/ 20 августа 2011

У меня есть проблема, которая заключается в том, что скины кнопок возвращаются к тематике по умолчанию после определенных действий в моем приложении. Ниже я включил частичный скриншот, где вы можете наблюдать за проблемой.

enter image description here

Левая кнопка возвращается к своей обложке по умолчанию после щелчка (щелчок запускает переход состояния). Правая кнопка - кнопка со скином по умолчанию. Обратите внимание, что моя мышь не нажимается и не нажимает левую кнопку.

Код для скина кнопки выглядит следующим образом:

<?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>

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Похоже, что скин устанавливается на spark.skins.spark.DefaultButtonSkin (не путать с обычным скином Button - spark.skins.spark.ButtonSkin)Это происходит, когда вы установили на кнопке selected = "true" или эта кнопка используется в качестве кнопки по умолчанию в форме.

В этом разделе приведен пример настройки выделенной темы оформления: http://forums.adobe.com/message/3811868

0 голосов
/ 16 июля 2012

Проблема в том, что скин сбрасывается при потере фокуса на кнопке, установленной как Default button.Это стандартное поведение, под ним можно найти быстрое исправление (это то же решение, на которое указал Стивен, но его проще найти на этой реальной странице)

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

Просто прикрепите ту же кнопку skinClass кemphasized свойство стиля вашей кнопки.Лучший способ сделать это как можно быстрее - это сделать с помощью вышеупомянутого CSS.Таким образом, вы можете выбрать все кнопки одновременно!

...