flex – 设置spark.components.Label的文本颜色
我有这个非常简单的自定义组件,由两个
Labels:_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次). 解决方法
似乎没有对Label的隐式转换,Flash Builder Premium 4.6根本不会编译,因为它说明如下:
如果你改变: _right.setStyle('color',n); 对此: (_right as Label).setStyle('color',n); 它应该工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |