【中华硕博网-全球500所高校指定报名中心】
【在职研究生】 【在职博士】 【MBA/EMBA】
  您现在的位置: 中华硕博网 > IT培训 > IT技术 > 多媒体 > 文章正文
站内搜索:

自由变换MC的颜色,flash colorMC类

作者:佚名    文章来源:不详    点击数:    更新时间:2008-5-10
中华硕博网(http://www.china-b.com)全球500所高校指定报名中心--自由变换MC的颜色,flash colorMC类

可以动态的将MC的颜色从一个颜色过度到另一个颜色,可能有写地方还不是最优的方式,如果有人找到更好的方式不要忘记告诉我哦:)

 

/*
* @class com.wersling.types.colorMC
* @author Wersling
* @version 1.0
* @description 扩张Color方法,修改MC颜色
* @usage var x = new colorMC(mc);
*             x.setChangeRGB(0xffcc00, 10, 0);
* -----------------------------------------------
* Latest update: 2005-4-21
* -----------------------------------------------
*
* -----------------------------------------------
* Functions:
*         colorMC(mc)
* 1. setRGB(RGB)
* 2. setChangeRGB(RGB, step_int, Nom)
*              3. changeColor(newCol , delCol)
*              4. getColArray(RGB)
* --------------------------------------------------
*/
import com.wersling.utils.Delegate;
import com.wersling.events.EventDispatcher;
//
class com.wersling.types.colorMC extends MovieClip
{
    private var _intervalID : Number;
    private var _MC : MovieClip;
    private var _col : Color;
    private var nowCol : Array;
    private var _step_int : Number ;
    private var _currentStep_int:Boolean;
    //同步冲突
    private var _Nom : Number = 0;
    //返回的参数,用来判断执行的步骤.
    //
    private var dispatchEvent : Function;
    public var addEventListener : Function;
    public var removeEventListener : Function;
    //
    //    构造函数
    //
    public function colorMC (mc : MovieClip)
    {
        EventDispatcher.initialize (this);
        _MC = mc;
        _col = new Color (_MC);
    }
    /**
    *=============================================
    * 函数:setRGB (RGB : Number)
    * 参数:1.RGB :十六位颜色值;
    * 说明:设置mc颜色
    * =============================================
    * */
    public function setRGB (RGB : Number)
    {
        if ( ! isNaN (RGB) || RGB < 0xFFFFFF || RGB > 0)
        {
            _col.

setRGB (RGB);
        }
    }
    /**
    *=============================================
    * 函数:setChangeRGB (RGB : Number, step_int : Number, Nom : Number)
    * 参数:1.RGB :新的颜色值;
    *        2.step_int :操作步骤;
    *         3.Nom :可选,触发监听的一个值;
    * 说明:将MC的颜色渐变到另一个颜色。
    * =============================================
    * */
    public function setChangeRGB (RGB : Number, step_int : Number, Nom : Number)
    {
        if (_currentStep_int)
        {
            clearInterval (_intervalID);
        }
        delete nowCol;
        _currentStep_int = true;
        if ( ! isNaN (Nom))
        {
            _Nom = Nom;
        }
        if ( ! isNaN (RGB) || RGB < 0xFFFFFF || RGB > 0)
        {
            if (step_int == undefined || step_int <= 0)
            {
                var step_int = 10;
            }
            var newCol = new Array;
            newCol = getColArray (RGB);
            //
            nowCol = new Array;
            var _l = _col.getRGB ().toString (16);
            _l =
            nowCol = getColArray (parseInt ("0x" + _l, 16));
            //
            var delCol = new Array;
            delCol

[0] = (newCol [0] - nowCol [0]) / step_int;
            delCol [1] = (newCol [1] - nowCol [1]) / step_int;
            delCol [2] = (newCol [2] - nowCol [2]) / step_int;
            //
            _step_int = step_int;
            _intervalID = setInterval (Delegate.create (this, changeColor) , 40, newCol, delCol);
        }
    }
    /**
    *=============================================
    * 函数:changeColor(newCol : Array, delCol : Array)
    * 参数:1.newCol :新的颜色值;
    *        2.delCol :每次增加的颜色值;
    * 说明:无
    * =============================================
    * */
    private function changeColor (newCol : Array, delCol : Array)
    {
        _step_int --;
        for (var i = 0 ; i < 3 ; i ++)
        {
            nowCol [i] += delCol [i]
        }
        var _R = nowCol [0].toString (16);
        if (_R.length == 1)
        {
            _R = "0" + _R;
        }
        var _G = nowCol [1].toString (16);
        if (_G.length == 1)
        {
            _G = "0" + _G;
        }
        var _B = nowCol [2].toString (16);
        if (_B.length == 1)
        {
            _B = "0" + _B;
        }
        var color_num = parseInt ("0x" + _R + _G + _B, 16);
        //合并数据,转为颜色值
        _col.setRGB (color_num);
        if (_step_int <= 0)
        {
            clearInterval (_intervalID);
            _currentStep_int = false;
            dispatchEvent (
            {
                type : "CMCcomplete", Nom : _Nom
            });
        }
    }
    /**
    *=============================================
    * 函数:getColArray (RGB : Number)
    * 参数:1.RGB :十六位颜色值;
    * 说明:将一个RGB分别存放在一个数组中
    * =============================================
    * */
    private function getColArray (RGB : Number) : Array
    {
        var _A = new Array;
        _A [0] = Math.floor (RGB / 65536);
        _A [1] = Math.floor (RGB % 65536 / 256);
        _A [2] = RGB % 256;
        return _A;
    }
}

 相关热词搜索
>>更多
  • 此栏目下没有文章