RGB 色彩值进制转换器 |
| 作者:佚名 来源:闪吧 作者: tigerkin 更新:2007-1-13 20:41:13 错误报告 我要投稿 |
做这个东东的目的是为了解释有人提出的,RGB 色彩值10进制与16进制之间的转换问题。
点击浏览该文件
点击浏览该文件
有的朋友想看源码,俺就贴出来,以供参考:
// 十六进制输入框初始化 hexadecimalRGB_input.text = "0x"; hexadecimalRGB_input.restrict = "0-9a-fA-Fx"; hexadecimalRGB_input.maxChars = 8; // 十进制输入框初始化 decimalR_input.text = decimalG_input.text = decimalB_input.text = ""; decimalR_input.restrict = decimalG_input.restrict = decimalB_input.restrict = "0-9"; decimalR_input.maxChars = decimalG_input.maxChars = decimalB_input.maxChars = 3; // warning_dynamic.text = "使用说明:1)在输入框内输入相应的16进制或10进制RGB值;2)选择转换关系;3)点击<转换>按钮"; // // 添加 Enter 键侦听 var enterHandler:Object = new Object(); enterHandler.onKeyDown = function(e:Object) { if (Key.getCode() == 13) { rgbTransform(); } }; Key.addListener(enterHandler); // // 设定按钮事件及其处理函数 switch_btn.onRelease = rgbTransform; function rgbTransform() { // 清空错误提示 warning_dynamic.text = ""; // 根据转换选择判断 switch (rgbOptions.selection.data) { case 16210 : // 16进制到10进制 // // 合法性初步验证 if (hexadecimalRGB_input.length == 8) { // 进一步验证并转换 var resultValue:Array = rgbToDec(hexadecimalRGB_input.text); // 判断转换结果 if (resultValue.length == 3) { // 更新十进制输入框 decimalR_input.text = resultValue[0]; decimalG_input.text = resultValue[1]; decimalB_input.text = resultValue[2]; // 刷新色彩样本 var sampleColor:Color = new Color(sample_mc); sampleColor.setRGB(Number(hexadecimalRGB_input.text)); break; } } // 错误提示 warning_dynamic.text = "无效的十六进制色彩值!"; warning_dynamic.text += "\n有效输入:0x000000 -- 0xFFFFFF"; break; case 10216 : // 10进制到16进制 // // 字符串到数值 var numR:Number = parseInt(decimalR_input.text); var numG:Number = parseInt(decimalG_input.text); var numB:Number = parseInt(decimalB_input.text); // 合法性验证 if (numR < 256 && numG < 256 && numB < 256) { // 更新十六进制输入框 hexadecimalRGB_input.text = rgbToHex(numR, numG, numB); // 刷新色彩样本 var sampleColor:Color = new Color(sample_mc); //sampleColor.setRGB(parseInt(hexadecimalRGB_input.text, 16)); sampleColor.setRGB(Number(hexadecimalRGB_input.text)); } else { warning_dynamic.text = "无效的十进制色彩值!"; warning_dynamic.text += "\n有效输入:0 -- 255"; } break; } } // // RGB 十进制到十六进制 function rgbToHex(r:Number, g:Number, b:Number):String { var r_string:String = r.toString(16); var g_string:String = g.toString(16); var b_string:String = b.toString(16); r_string = (r_string.length < 2) ? ("0" + r_string) : r_string; g_string = (g_string.length < 2) ? ("0" + g_string) : g_string; b_string = (b_string.length < 2) ? ("0" + b_string) : b_string; return ("0x" + (r_string + g_string + b_string).toUpperCase()); } // // RGB 十六进制到十进制 function rgbToDec(rgbHex:String):Array { var rgb_array:Array = new Array(); var rDec:Number = parseInt(("0x" + rgbHex.slice(2, 4)), 16); var gDec:Number = parseInt(("0x" + rgbHex.slice(4, 6)), 16); var bDec:Number = parseInt(("0x" + rgbHex.slice(6, 8)), 16); if (rgbHex.slice(0, 2) == "0x" && rDec < 256 && gDec < 256 && bDec < 256) { rgb_array.push(rDec); rgb_array.push(gDec); rgb_array.push(bDec); return rgb_array; } return rgb_array; }
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |