我的目标是通过动态添加文本的颜色。
var tf:TextField = new TextField();
tf.text ="jkg"
tf.textColor = chatData.user;
listChat.addChild(tf);
我的聊天数据用户是16777215,这种格式。但是我需要chatData.user(0xFF0000(这个格式。我该如何转换颜色代码?
查看全局函数:parseInt(String[,radix](
它将以0x开头的字符串视为十六进制字符串。如果没有0x;您可以为基数参数指定16。
tf.textColor = parseInt(chatData.user);
tf.textColor = parseInt(chatData.user, 16);
目前还不清楚你的问题到底是什么/你想做什么。
但首先,十进制数1677721510的十六进制表示是FFFFFF16。哪个是白色的。。。非红色(应为FF000016(
uint
只是一个无符号的整数。它可以表示为基数。
1610=208=100002=1016=G17
这些都是相同的整数,只是显示它们的方式不同,但对大多数编程语言来说都是一样的。在flash中,您可以使用0x
表示法来表示十六进制数字。在ActionScript的表亲JavaScript中,您可以创建一个八进制文字,方法是在它前面加一个零(这有时会让一些人对010==8
产生反感(
但回到你的要求上来。我很快就测试了它,如果你给它一个字符串,textColor
setter就会把它合并成uint。
var tf:TextField = new TextField();
tf.text = "Test";
var color;
color = 0xFF0000; // Red
color = 16711680; // Red
color = "16711680"; // Red
color = "0xFF0000"; // Red
tf.textColor = color;
this.addChild(tf);
这些都是可以接受的"红色",但实际上.textColor
想要uint
,所以前两个是最有效的。但0xFF0000 == 16711680
。它们不是"不同"的数字。。。它们是相同的数字,只是表达方式不同而已。
所以,我不明白你的问题是什么?你的代码应该可以工作,并且完全按照你告诉它的去做…
简单。只需将字符串解析为uint。
var txtColor:uint=uint(chatData.user);
tf.textColor=txtColor;
var number:uint = chatData.user;
tf.textColor = number
试试这个