У меня есть очень простой пользовательский компонент, состоящий из двух меток : _left и _right .
Он должен представлять несколько видов очков в игре: 1.2.3.4.5. 6
Последнее число («6» в приведенном выше примере) должно быть выделено жирным шрифтом, если оно только что изменилось (в текущем раунде игры), в противном случае все числа должны выглядеть одинаково.
Также последнее число должно быть красным или зеленым (в зависимости от того, является ли это «плохим» или «хорошим» счетом).
Вот мой исходный код ScoreLabel.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:HGroup
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
gap="0">
<fx:Script>
<![CDATA[
public function setText(str:String, changed:Boolean=false):void {
if (!changed) {
_right.text = '';
_left.text = str;
return;
}
var array:Array = str.split('.');
_right.text = array.pop();
_left.text = array.join('.') + '.';
}
public function setColor(n:uint):void {
_right.setStyle('color', n);
trace('setColor: ' + n);
}
]]>
</fx:Script>
<s:Label id="_left" width="100%" textAlign="right"/>
<s:Label id="_right" width="25" fontWeight="bold" color="#006600"/>
</s:HGroup>
Моя проблема: когда я вызываю myLabel.setColor (0xFF0000); текст не меняется на красный, а остается по умолчанию зеленым цветом - даже если я вижу следы в отладчике.
Есть идеи, пожалуйста, почему цвет не меняется?
Также я знаю, что могу изменить вышеуказанный компонент на:
private var _color:uint;
<s:Label id="_right" width="25" fontWeight="bold" color="{_color}"/>
и измените этот _color член, но я бы предпочел не вводить еще одну привязку данных, потому что в моем приложении будет много ScoreLabel:
(как вы видите выше, все цифры зеленые - даже если setColor (0xFF0000) был вызван 3 раза).