前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flash小品之颜色解析

Flash小品之颜色解析

作者头像
用户2615200
发布2018-08-02 17:17:11
3380
发布2018-08-02 17:17:11
举报
文章被收录于专栏:tkokof 的技术,小趣及杂念

    Flash小品之颜色解析       不知不觉已经用了一阵子的AS3,渐渐的对Flash有了不少好感,从一个游戏爱好者的角度出发,我个人更喜欢将Flash看做是一套完备的2D游戏制作引擎,平日兴致所致之时,自己便用它来随便搞些东西,开发效率上确实提高了不少,很多开发上的细节Flash基本都已经提供实现,再加上其完善的编辑功能,我个人非常推崇将其用于原型游戏的开发,有兴趣的朋友不妨一试 :)      近来有机会处理到了Bitmap相关的内容,尤其是颜色部分的处理,感觉Flash提供的方法,譬如BitmapData.getPixel,BitmapChannel等等,都不是特别方便直观,尤其是在需要处理各个颜色分量的情况下。鉴于Flash内置的颜色模式遵循‘a r g b’的排列方式,自己又暂时找不到特别好的处理方法(有识之士请告知一下 :)),于是自己又重造了一次车轮,在此为记,有兴趣的朋友可以看一看:

代码语言:javascript
复制
/*! 
    \file ARGBColor.as
    \brief this is simple color class for color converting
*/

package  
{
	
	public class ARGBColor
	{
		// color value
        private var a:uint;
		private var r:uint;
		private var g:uint;
		private var b:uint;
		
		// default constructor
		public function ARGBColor(value:uint=0)
		{
			SetColor(value);
		}
		
		//! set color value
		public function SetColor(value:uint):void
		{
		    splitColor(value);
		}
		
		//! set color value
		public function SetColorARGB(a:uint, r:uint, g:uint, b:uint):void
		{
			SetA(a);
			SetR(r);
			SetG(g);
			SetB(b);
		}
		
		//! get color value
		public function GetColor():uint
		{
			return mergeColor();
		}
		
		//! set alpha value
		public function SetA(a_:uint):void
		{
		    a = a_;
			a = clamp(a, 0, 0xFF);
		}
		
		//! get alpha value
		public function GetA():uint
		{
			return a;
		}
		
		//! set red value
		public function SetR(r_:uint):void
		{
			r = r_;
			r = clamp(r, 0, 0xFF);
		}
		
		//! get red value
		public function GetR():uint
		{
			return r;
		}
		
		//! set green value
		public function SetG(g_:uint):void
		{
			g = g_;
			g = clamp(g, 0, 0xFF);
		}
		
		//! get green value
		public function GetG():uint
		{
			return g;
		}
		
		//! set blue value
		public function SetB(b_:uint):void
		{
			b = b_;
			b = clamp(b, 0, 0xFF);
		}
		
		//! get blue value
		public function GetB():uint
		{
			return b;
		}
		
		// split color
		private function splitColor(value:uint):void
		{
		    a = ((value >> 24) & 0xFF); // seems in Flash '>>' is signed shfiting
			r = ((value >> 16) & 0xFF);
			g = ((value >> 8) & 0xFF);
			b = (value & 0xFF);
		}
		
		// merge color
		private function mergeColor():uint
		{
			return (a << 24) | (r << 16) | (g << 8) | b;
		}
		
		// clamp helper function
		private function clamp(val:Number, min:Number, max:Number):Number
		{
            return Math.max(min, Math.min(max, val));
        }
		
	}
	
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年12月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档