如何在as3中转换颜色代码

时间:2011-10-21 09:58:18

标签: flash actionscript-3 colors

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

var tf:TextField = new TextField();
tf.text ="jkg"
tf.textColor = chatData.user;
listChat.addChild(tf);
  

这里我的chatData.user是16777215这种格式。但是我需要chatData.user(0xFF0000)这个格式。我会转换颜色代码吗?

4 个答案:

答案 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

试试这个