如何在as3中转换颜色代码



我的目标是通过动态添加文本的颜色。

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

试试这个

最新更新