Flex4之获取各种颜色RGB值的事例
Flex4之获取各种颜色RGB值的例子
接下来的例子演示了Flex中如何将颜色的值转化为字符串,根据RGB计算出各个值以及格式化颜色值。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" backgroundColor="white" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<fx:Model id="colorObj">
<root>
<color>{colorPicker.selectedColor}</color>
<red>{rChannel(colorObj.color)}</red>
<green>{gChannel(colorObj.color)}</green>
<blue>{bChannel(colorObj.color)}</blue>
</root>
</fx:Model>
</fx:Declarations>
<fx:Script>
<![CDATA[
private function fixedInt(value:int, mask:String):String {
return String(mask + value.toString(16)).substr(-mask.length).toUpperCase();
}
private function rChannel(value:int):int {
return value >> 16 & 0xFF;
}
private function gChannel(value:int):int {
return value >> 8 & 0xFF;
}
private function bChannel(value:int):int {
return value >> 0 & 0xFF;
}
private function rgbToInt(r:int, g:int, b:int):int {
return r << 16 | g << 8 | b << 0;
}
]]>
</fx:Script>
<mx:Form>
<mx:FormItem label="Color:" direction="horizontal">
<mx:ColorPicker id="colorPicker" />
<mx:Label text="0x{fixedInt(colorPicker.selectedColor, '000000')}" width="100" />
</mx:FormItem>
<mx:FormItem label="Red:" direction="horizontal">
<mx:Label text="{colorObj.red}" />
<mx:Label text="(0x{fixedInt(colorObj.red, '00')})" />
</mx:FormItem>
<mx:FormItem label="Green:" direction="horizontal">
<mx:Label text="{colorObj.green}" />
<mx:Label text="(0x{fixedInt(colorObj.green, '00')})" />
</mx:FormItem>
<mx:FormItem label="Blue:" direction="horizontal">
<mx:Label text="{colorObj.blue}" />
<mx:Label text="(0x{fixedInt(colorObj.blue, '00')})" />
</mx:FormItem>
<mx:FormItem label="Color:" direction="horizontal">
<mx:Label text="{colorObj.color}" />
<mx:Label text="(0x{fixedInt(rgbToInt(colorObj.red, colorObj.green, colorObj.blue), '000000')})" />
</mx:FormItem>
</mx:Form>
<mx:Label text="{int(0xFF00FF)}" />
</s:Application>
可以发现的是FLEX中适用的颜色RGB值一般都会加上0x作为前缀,所以要注意这一点了,对比一下常规颜色RGB值就可以发现了,可以参考下这个博客上介绍常规颜色RGB值
http://blog.sina.com.cn/s/blog_3e5694650100jfch.html?retcode=0