| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品资料 >> 设计 >> 网页设计 >> flash >> 正文 用户登录 新用户注册
AS类:颜色属性ColorProperty          【字体:
AS类:颜色属性ColorProperty
作者:佚名    平面来源:不详    点击数:    更新时间:2008-6-23

用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

(出处:网侠)

平面录入:chqnet    责任编辑:chqnet 
  • 上一个平面:

  • 下一个平面:
  • 最新热点 最新推荐 相关平面
    Flash MX 特色之旅之一
    用Flash做一个自己的个性MP3…
    Flash音频软件Sound Forge(…
    在Flash中用XML实现多语言支…
    用Flash 制作Winamp光谱柱的…
    用Flash来制作一个Flash播放…
    FlashMX 基础应用(1.1)
    用flashMX制作迷宫游戏(1)
    无AS在FLASH中实现三种爆炸效…
    用FLASH画写意画-竹
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)