AS3实现各颜色进制间的转换(颜色转换)

  • 作者:不详
  • 来源:淘沙网
  • 更新时间:2012-07-10 22:27:13
  • 点击:12335
[0分]
将RGB转为0-255这样的十进制。

AS3 颜色转换

var color:uint = parseInt("0x38280f", 16);
var blue:int = color & 0xFF;
var green:int = (color >> 8) & 0xFF;
var red:int = (color >> 16) & 0xFF;
trace(String(red)+String(green)+String(blue))

//4a6a09
//var quantity:Number = 1383939;
//trace(quantity.toString(16)); // Displays: a4

trace(parseInt("0x4a6a09"));

利用带有基数参数的parseInt()函数转化成一个十进制表示的字符串。用带有基数参数的Number, uint或int对象的toString()方法将十进制的数字转换为其它进制的字符串。
在ActionScript中无论设置一个什么样的数值,结果都被作为十进制检索:
// Create a Color object
var pink:ColorTransform = new ColorTransform( );

// Set the RGB value as a hexadecimal
pink.rgb = 0xF612AB;

// This displays the value as decimal: 16126635
trace(pink.rgb);
当然,如果想要输出其它形式的值,可以用toString(radix)对Number,unit或int对象的任何一个数字转换成字符串形式的另一种进制的值。
下面两个例子是将unit对象转换输出二进制和十六进制的字符串。
// The radix is 2, so output as binary
trace(new uint(51).toString(2)); // Displays: 110011
// The radix is 16, so output as hex
trace(new uint(25).toString(16)); // Displays: 19
当一个被符值的数字变量使用toString()方法时,flash会在执行toString()方法前自动建立一个新的Number, uint或int对象。虽然这不是典型的良好的习惯,但也不是技术上的错误,和在大部分应用程序的不同是可以忽略的。
var quantity:Number = 164;
trace(quantity.toString(16)); // Displays: a4
注意:这些例子的结果不是数字类型,而是字符串,像110011,19,A4。
下面的例子是设置一个ColorTransform对象的RGB值,执行toString()结果显示一个十六进制的值。
// Create a Color object
var pink:Color = new ColorTransform( );

// Set the RGB value as a hexadecimal
pink.rgb = 0xF612AB;

trace(pink.rgb.toString(16)); // Displays: f612ab

toString() 方法的基数叁数的有效范围是从 2 到 36。如果执行toString()不含参数或者无效参数,那么默认返回的是十进制。
用含有参数的parseInt()函数可以达到toString()的逆运算。parseInt()函数含有一个字符串值和一个数字。这有利于除十进制的工作。
下面三个例子展示了从二进制,十六进制和十进制的字符串转化为数字(注意这个结果总是一个十进制的)。
trace(parseInt("110011", 2)); // Displays: 51
trace(parseInt("19", 16)); // Displays: 25
trace(parseInt("17", 10)); // Displays: 17
如果省略,基数参数默认识10,除非、字符串以0x或0开头,这种情况默认是十六进制或八进制:
trace(parseInt("0x12")); // The radix is implicitly 16. Displays: 18
trace(parseInt("017")); // The radix is implicitly 8. Displays: 15
一个明确的基数会覆盖模糊的。在下面的例子中,得到的结果是0而不是12。当这个数被以十进制处理,碰到非数字字符x时转换会停止:
// The number is treated as a decimal, not a hexadecimal number
trace(parseInt("0x12", 10)); // Displays: 0 (not 12 or 18)
这样,在数字前面的0会被当作一个自由数字处理,而不是一个八进制的数:
// The number is treated as a decimal, not an octal number
trace(parseInt("017", 10)); // Displays: 17 (not 15)
千万不要忘记0,0x或一个明确的基数。下面输入的字符串作为十进制而返回NaN(不是数字)因为A不能转换成是个整数:
trace(parseInt("A9FC9C")); // NaN
收藏内容
评分

特别说明:本站所有资源仅供学习与参考,请勿用于商业用途。若转载请注明来自56gee.com中的“来源”。

栏目精华