Синтаксис AS3 для доступа к цвету состояния

Скажем, у меня есть это в MXML (Sparkskin):

<s:SolidColor id="fillColor" 
                      color="0xff0000"
                      color.selectedOver="0xf74b47"
                      color.selectedUp="0xf74b47"/>

Для изменения свойства цвета в AS3 используется следующий синтаксис:

fillcolor.color = 0x00ff00;

Теперь я хочу изменить color.selectedOver в AS3.

Есть ли способ?

ie fillcolor['selectedOver'].color = 0x00ff00; ...

2 ответа

Спасибо, я согласен. Единственное решение, кажется, переопределяет updateDisplayList и использует что-то вроде:

switch (currentState){
    case 'selectedOver':
       fillColor.color = 0xff0000;
       break;
    case 'selectedUp'
       fillColor.color = 0xffff00;
       break;

         ...
}

Вы не можете получить к нему доступ напрямую, цвет - это просто целочисленное свойство в AS. Не уверен, что есть лучший способ, но вы можете привязать значение цвета к переменной и изменить эту переменную во время выполнения:

// place this in your Script section 
[Bindable]
private var selectedOverColor:int = 0xf74b47;

// bind the color value to your variable
<s:SolidColor id="fillColor" 
                  color="0xff0000"
                  color.selectedOver="{selectedOverColor}"
                  color.selectedUp="0xf74b47"/>

// change this variable to the new color somewhere at runtime:
selectedOverColor = 0x000000;
Другие вопросы по тегам