AS类:颜色属性ColorProperty

用AS来调整图片的色调、亮度、灰度、饱和度、对比度、反相虽然不难,但因为涉及到ColorMatrixFilter的颜色矩阵的应用,使用起来有点麻烦,因此写了这个类ColorProperty。

这个类是对MovieClip类扩展,为MovieClip增加了这些属性:

色调:_color 
亮度:_brightness 
灰度:_grayscale 
饱和度:_saturation 
对比度:_contrast 
反相:_invert
当然,你也可以改写这个类,使之成为一个新类,而不是扩展MovieClip类。

用法(与_width,_height用法一样):

import ColorProperty;
ColorProperty.init();
//色调,用如0xFF0000的16进制
//img._color=0x333399;
//trace(img._color);
//亮度,取值范围为:-255~255
img._brightness = 100;
//trace(img._brightness)
//灰度,布尔值,true为灰度,false则反之。
//img._grayscale = true;
//trace(img._grayscale);
//饱和度,一般范围为:0~3为宜
//img._saturation = 3;
//trace(img._saturation);
//对比度,取值范围为:0~1
//img._contrast = 0.15;
//反相,布尔值,true为反相,false则反之。
//trace(img._contrast);
//img._invert=true;

代码如下:

代码如下:

/** 
* @Name:ColorProperty(MovieClip颜色属性) 
* 色调:_color,亮度:_brightness,灰度:_grayscale,饱和度:_saturation,对比度:_contrast,反相:_invert 
* @author:Flashlizi 
* @version:1.0 
*/ 
import flash.filters.ColorMatrixFilter; 
class ColorProperty 

    //_matrix是ColorMatrixFilter类的默认恒等矩阵 
    //_nRed,_nGreen,_nBlue是计算机图形颜色亮度的常量 
    //private static var _matrix : Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]; 
    private static var _nRed : Number = 0.3086; 
    private static var _nGreen : Number = 0.6094; 
    private static var _nBlue : Number = 0.0820; 
    function ColorProperty () 
    { 
    } 
    public static function init () 
    { 
        setColorProperty (); 
        //色调Color 
        MovieClip.prototype.addProperty ("_color", MovieClip.prototype.getColor, MovieClip.prototype.setColor); 
        //亮度Brightness(取值范围为:-255~255) 
        MovieClip.prototype.addProperty ("_brightness", MovieClip.prototype.getBrightness, MovieClip.prototype.setBrightness); 
        //灰度Grayscale 
        MovieClip.prototype.addProperty ("_grayscale", MovieClip.prototype.getGrayscale, MovieClip.prototype.setGrayscale); 
        //饱和度Saturation(饱和度级别一般范围为:0~3) 
        MovieClip.prototype.addProperty ("_saturation", MovieClip.prototype.getSaturation, MovieClip.prototype.setSaturation); 
        //对比度Contrast(取值范围为:0~1) 
        MovieClip.prototype.addProperty ("_contrast", MovieClip.prototype.getContrast, MovieClip.prototype.setContrast); 
        //反相Invert 
        MovieClip.prototype.addProperty ("_invert", MovieClip.prototype.getInvert, MovieClip.prototype.setInvert); 
    } 
    private static function setColorProperty () 
    { 
        //色调Color,getter&setter 
        MovieClip.prototype.getColor = function () : Number 
        { 
            return MovieClip.prototype._color; 
        } 
        MovieClip.prototype.setColor = function (nColor : Number) : Void 
        { 
            var colorStr : String = nColor.toString (16); 
            var nRed : Number = Number ("0x" + colorStr.slice (0, 2)); 
            var nGreen : Number = Number ("0x" + colorStr.slice (2, 4)); 
            var nBlue : Number = Number ("0x" + colorStr.slice (4, 6)); 
            var Color_Matrix : Array = [1, 0, 0, 0, nRed, 0, 1, 0, 0, nGreen, 0, 0, 1, 0, nBlue, 0, 0, 0, 1, 0]; 
            this.filters = [new ColorMatrixFilter (Color_Matrix)]; 
            MovieClip.prototype._color = nColor; 
        } 
        //亮度Brightness,getter&setter 
        MovieClip.prototype.getBrightness = function () : Number 
        { 
            return MovieClip.prototype._brightness; 
        } 
        MovieClip.prototype.setBrightness = function (offset : Number) : Void 
        { 
            var Brightness_Matrix : Array = [1, 0, 0, 0, offset, 0, 1, 0, 0, offset, 0, 0, 1, 0, offset, 0, 0, 0, 1, 0]; 
            this.filters = [new ColorMatrixFilter (Brightness_Matrix)]; 
            MovieClip.prototype._brightness = offset; 
        } 
        //灰度Grayscale,getter&setter 
        MovieClip.prototype.getGrayscale = function () : Boolean 
        { 
            return MovieClip.prototype._grayscale; 
        } 
        MovieClip.prototype.setGrayscale = function (yes : Boolean) : Void 
        { 
            if (yes) 
            { 
                var Grayscale_Matrix : Array = [_nRed, _nGreen, _nBlue, 0, 0, _nRed, _nGreen, _nBlue, 0, 0, _nRed, _nGreen, _nBlue, 0, 0, 0, 0, 0, 1, 0]; 
                this.filters = [new ColorMatrixFilter (Grayscale_Matrix)]; 
                MovieClip.prototype._grayscale = true; 
            } else 
            { 
                MovieClip.prototype._grayscale = false; 
            } 
        } 
        //饱和度Saturation,getter&setter 
        MovieClip.prototype.getSaturation = function () : Number 
        { 
            return MovieClip.prototype._saturation; 
        } 
        MovieClip.prototype.setSaturation = function (nLevel : Number) : Void 
        { 
            var srcRa : Number = (1 - nLevel) * _nRed + nLevel; 
            var srcGa : Number = (1 - nLevel) * _nGreen; 
            var srcBa : Number = (1 - nLevel) * _nBlue; 
            var srcRb : Number = (1 - nLevel) * _nRed; 
            var srcGb : Number = (1 - nLevel) * _nGreen + nLevel; 
            var srcBb : Number = (1 - nLevel) * _nBlue; 
            var srcRc : Number = (1 - nLevel) * _nRed; 
            var srcGc : Number = (1 - nLevel) * _nGreen; 
            var srcBc : Number = (1 - nLevel) * _nBlue + nLevel; 
            var Saturation_Matrix : Array = [srcRa, srcGa, srcBa, 0, 0, srcRb, srcGb, srcBb, 0, 0, srcRc, srcGc, srcBc, 0, 0, 0, 0, 0, 1, 0]; 
            this.filters = [new ColorMatrixFilter (Saturation_Matrix)]; 
            MovieClip.prototype._saturation = nLevel; 
        } 
        //对比度Contrast,getter&setter 
        MovieClip.prototype.getContrast = function () : Number 
        { 
            return MovieClip.prototype._contrast; 
        } 
        MovieClip.prototype.setContrast = function (nLevel : Number) : Void 
        { 
            var Scale : Number = nLevel * 11; 
            var Offset : Number = 63.5 - (nLevel * 698.5); 
            var Contrast_Matrix : Array = [Scale, 0, 0, 0, Offset, 0, Scale, 0, 0, Offset, 0, 0, Scale, 0, Offset, 0, 0, 0, 1, 0]; 
            this.filters = [new ColorMatrixFilter (Contrast_Matrix)]; 
            MovieClip.prototype._contrast = nLevel; 
        } 
        //反相Invert,getter&setter 
        MovieClip.prototype.getInvert = function () : Boolean 
        { 
            return MovieClip.prototype._invert; 
        } 
        MovieClip.prototype.setInvert = function (yes : Boolean) : Void 
        { 
            if (yes) 
            { 
                var Invert_Matrix : Array = [ - 1, 0, 0, 0, 255, 0, - 1, 0, 0, 255, 0, 0, - 1, 0, 255, 0, 0, 0, 1, 0]; 
                this.filters = [new ColorMatrixFilter (Invert_Matrix)]; 
                MovieClip.prototype._invert = true; 
            } else 
            { 
                MovieClip.prototype._invert = false; 
            } 
        } 
    } 
}

下载ColorProperty.rar

(0)

相关推荐

  • AS类:颜色属性ColorProperty

    用AS来调整图片的色调.亮度.灰度.饱和度.对比度.反相虽然不难,但因为涉及到ColorMatrixFilter的颜色矩阵的应用,使用起来有点麻烦,因此写了这个类ColorProperty. 这个类是对MovieClip类扩展,为MovieClip增加了这些属性: 色调:_color  亮度:_brightness  灰度:_grayscale  饱和度:_saturation  对比度:_contrast  反相:_invert 当然,你也可以改写这个类,使之成为一个新类,而不是扩展Movie

  • C#反射技术的简单操作(读取和设置类的属性)

    要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法. 首先建立一个测试的类 复制代码 代码如下: public class MyClass { public int one { set; get; } public int two { set; get; } public int five { set; get; } public int three { set; get; } public int four { set; ge

  • 基于python3 类的属性、方法、封装、继承实例讲解

    Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类. 类定义 类定义语法格式如下: class ClassName: <statement

  • Python实现动态添加类的属性或成员函数的解决方法

    某些时候我们需要让类动态的添加属性或方法,比如我们在做插件时就可以采用这种方法.用一个配置文件指定需要加载的模块,可以根据业务扩展任意加入需要的模块. 本文就此简述了Python实现动态添加类的属性或成员函数的解决方法,具体方法如下: 首先我们可以参考ulipad的实现:mixin. 这里做的比较简单,只是声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数. 代码如下所示: class WinBAS(Bas): def

  • Python的类实例属性访问规则探讨

    一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里,我们需要明白以下几个地方: 1.Python是一门动态语言,任何实体都可以动态地添加或删除属性. 2.一个类定义了一个作用域. 3.类实例也引入了一个作用域,这与相应类定义的作用域不同. 4.在类实例中查找属性的时候,首先在实例自己的作用域中查找,如果没有找到,则再在类定义的作用域中查找. 5.在对类实例属性进行赋值的时候,实际上会在类实例

  • Spring boot工具类静态属性注入及多环境配置详解

    由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

  • java枚举类的属性、方法和构造方法应用实战

    本文实例讲述了java枚举类的属性.方法和构造方法应用.分享给大家供大家参考,具体如下: 一 点睛 枚举类也是一种类,只是它是一种比较特殊的类,因此它一样可以使用属性和方法. 枚举类通常应该设计成不可变类,也就说它的属性值不应该允许改变,这样会更安全,而且代码更加简洁.为此,我们应该将枚举类的属性都使用private final修饰. 一旦为枚举类显式定义了带参数的构造器,则列出枚举值时也必须对应地传入参数. 二 简单枚举类实战 1 代码 Gender.java public enum Gend

  • spring框架配置实体类复杂属性注入xml文件过程详解

    spring框架是javaWeb项目中至关重要的一个框架,大多web 项目在工作层次上分为持久层.服务层.控制层.持久层(dao.mapper)用于连接数据库,完成项目与数据库中数据的传递:服务层(service)主要完成项目中各种业务(增.删.改.查),连接持久层.控制层,还和各种实体类打交道,而控制层主要和web前端页面打交道,与页面传递数据. 今天,主要介绍服务层的框架spring,也是各种整合框架最核心的框架.主要介绍spring中的一个小知识点,很难记的,那就是在spring框架对实体

  • Java实现不同的类的属性之间相互赋值

    在开发的时候可能会出现将一个类的属性值,复制给另外一个类的属性值,这在读写数据库的时候,可能会经常的遇到 ,特别是对于一个有继承关系的类的时候,我们需要重写很多多余的代码,下面有一种简单的方法实现该功能 1.首先有两个类,两个类之间有相同的属性名和类型,也有不同的属性名很类型: public class ClassTestCopy2 { private int id; private String name; private String password; private String sex

  • python隐藏类中属性的3种实现方法

    方法一: 效果图一: 代码一: # 定义一个矩形的类 class Rectangle: # 定义初始化方法 def __init__(self,width,height): self.hidden_width = width self.hidden_height = height # 定义获取width.height的方法 def get_width(self): return self.hidden_width def get_height(self): return self.hidden_

随机推荐