Flash小品之颜色解析
时间:2022-06-05
本文章向大家介绍Flash小品之颜色解析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Flash小品之颜色解析 不知不觉已经用了一阵子的AS3,渐渐的对Flash有了不少好感,从一个游戏爱好者的角度出发,我个人更喜欢将Flash看做是一套完备的2D游戏制作引擎,平日兴致所致之时,自己便用它来随便搞些东西,开发效率上确实提高了不少,很多开发上的细节Flash基本都已经提供实现,再加上其完善的编辑功能,我个人非常推崇将其用于原型游戏的开发,有兴趣的朋友不妨一试 :) 近来有机会处理到了Bitmap相关的内容,尤其是颜色部分的处理,感觉Flash提供的方法,譬如BitmapData.getPixel,BitmapChannel等等,都不是特别方便直观,尤其是在需要处理各个颜色分量的情况下。鉴于Flash内置的颜色模式遵循‘a r g b’的排列方式,自己又暂时找不到特别好的处理方法(有识之士请告知一下 :)),于是自己又重造了一次车轮,在此为记,有兴趣的朋友可以看一看:
/*!
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));
}
}
}
- 如何部署编译NDIS驱动的环境(内部资料)
- 深度学习的入门级装机配置推荐
- Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?
- GridView绑定小技
- XCode读取Excel数据(适用于任何数据库)
- ObjectDataSource选择业务对象列表为空的探讨
- ASP.NET Web API自身对CORS的支持: CORS授权检验的实施
- 模版引擎XTemplate与代码生成器XCoder(源码)
- 深度学习让人脸识别准确率不断提升
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
- 小论线性变换
- 谈谈基于OAuth 2.0的第三方认证 [下篇]
- Razor Engine,实现代码生成器的又一件利器
- 谈谈基于OAuth 2.0的第三方认证 [上篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法