我的目标是动态添加文本颜色。
var tf:TextField = new TextField();
tf.text ="jkg"
tf.textColor = chatData.user;
listChat.addChild(tf);
这里我的chatData.user是16777215这种格式。但是我需要chatData.user(0xFF0000)这个格式。我会转换颜色代码吗?
答案 0 :(得分:1)
检查全局函数:parseInt(String [,radix])
它将以0x开头的字符串视为十六进制字符串。如果没有0x;你可以为radix参数指定16。
tf.textColor = parseInt(chatData.user);
tf.textColor = parseInt(chatData.user, 16);
答案 1 :(得分:0)
目前还不清楚你的问题究竟是什么/你想要做什么。
但首先,十进制数16777215 10 的十六进制表示为FFFFFF 16 。哪个是白色...不是红色(这将是FF0000 16 )
uint
只是一个无符号的整数。它可以代表基础。
16 10 = 20 8 = 10000 2 = 10 16 = G 17 子>
这些都是相同的整数,只是展示它们的不同方式,但对大多数编程语言来说都是一样的。在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
。它们不是“不同的”数字......它们是相同的数字,只是表达它们的不同方式。
所以,我不明白你的问题是什么?你的代码应该可以运行,并且完全按照你的要求去做......
答案 2 :(得分:0)
易。只需将字符串解析为uint。
var txtColor:uint=uint(chatData.user);
tf.textColor=txtColor;
答案 3 :(得分:0)
var number:uint = chatData.user;
tf.textColor = number
试试这个