Apache flex 设置spark.components.Label的文本颜色

Apache flex 设置spark.components.Label的文本颜色,apache-flex,label,flex4,flex4.5,flex-spark,Apache Flex,Label,Flex4,Flex4.5,Flex Spark,我有一个非常简单的自定义组件,由两部分组成:\u left和\u right 它应该代表游戏中的几种分数:1.2.3.4.5。6 如果最后一个数字(上例中的“6”)刚刚更改(在当前游戏回合中),则应使用粗体字体,否则所有数字的外观应相同 最后一个数字应该是红色或绿色(取决于分数是“差”还是“好”) 以下是我的ScoreLabel.mxml源代码: <?xml version="1.0" encoding="utf-8"?> <s:HGroup xmlns:fx="ht

我有一个非常简单的自定义组件,由两部分组成:\u left\u 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}"/>
private var\u颜色:uint;
并更改\u color成员,但我不希望再引入一个数据绑定,因为我的应用程序中将有许多ScoreLabel:


(如上所示,所有数字都是绿色的,即使调用了3次setColor(0xFF0000)。

如果没有对标签进行隐式转换,Flash Builder Premium 4.6似乎无法编译,因为它说明了以下内容:

此行有多个标记: -labelDisplay -1061:通过静态类型为spark的引用调用可能未定义的方法setStyle。核心:IDisplayText

如果您更改:

_right.setStyle('color', n);
为此:

(_right as Label).setStyle('color', n);

它应该可以工作。

我测试了你的代码,它对我来说很有效。。。也许你应该给我们更多的细节。谢谢你的尝试,我很抱歉:我的主要源代码有一个输入错误-来自我的业余爱好项目工作到深夜。请问哪个版本的flash builder编译此代码?