AS3各颜色进制间转换 颜色转换

将RGB转为0-255这样的十进制。

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值