Перерисовка / обновление Custom Skin в Flex - PullRequest
0 голосов
/ 12 января 2012

Итак, я создал настраиваемую кнопку-переключатель для включения свойства currentValue: int

Таким образом, я могу сделать следующее ...

<fx:Script>
    protected var currentValue:int = 0;
    protected function changeValue(x:int):void{
        currentValue = x;
    }
</fx:Script>

<MyToggleButton currentValue="{updatedValue}" styleName="MyToggleStyle" click="changeValue(1)" id="first"/>
<MyToggleButton currentValue="{updatedValue}"  styleName="MyToggleStyle" click="changeValue(2)" id="second"/>

Идея этого скрипта заключается в том, чтобы внешний вид переключателя изменялся в зависимости от изменения currentValue. Как бы я обновлял свою кнопку-переключатель каждый раз, чтобы стиль мог обновляться в соответствии с изменением «currentValue»?

P.S. MyToggleStyle будет ссылаться на класс Skin, написанный на mxml, который будет использовать getStyle ("currentValue") для получения изменений в currentValue

1 Ответ

0 голосов
/ 12 января 2012

Если свойство currentValue будет влиять только на графику обложки, и у вас есть несколько предопределенных «взглядов», то вы должны создать обложку с состояниями. (хороший пример см. spark.skins.spark.CheckBoxSkin.)

в MyToggleButton:

public function set currentValue(value:int):void {
   _currentValue = value;
   invalidateSkinState();
}

protected override function getCurrentSkinState():String {
   return _currentValue == 9 ? "someStateName" : "otherState";
}

Это приведет к аннулированию состояния вашей кожи при каждом изменении currentValue, и Flex автоматически вызовет getCurrentSkinState(), чтобы определить новое состояние вашей кожи. Затем вы можете использовать includeIn, условные свойства и т. Д. В вашей коже, чтобы определить ее внешний вид.

Если вы хотите отобразить currentValue в виде текста в вашем скине, вам следует рассмотреть части скина. Это в основном слоты, которые определяет ваш компонент, и затем оболочка «заполняется» таким компонентом, как этикетка. Например, метка на стандартной кнопке зажигания - это часть скина labelDisplay. Компонент может установить текст непосредственно для этого, но его создание зависит от скина.

P.S. Вам также понадобится [Bindable] на currentValue в вашем примере кода.

...