플래시 코드 가 소자 밝기, 색조, 고급, 투명 도 를 바 꾸 는 방법

색상 클래스 를 통 해 영화 색상 밝 기 를 변경 합 니 다. (영화 명암 효과 설정) import com. comon. motion. Color; /계승 ColorTransform var color: Color = new Color ();color.brightness = [-1,1]        //-1 ~ 1 은 수치 범위 mc. transform. color Transform = color 입 니 다.        //mc 는 영화 편집 이름 의 색조 이다. (영화 색상 변경) 네 가지 값 이 있다. 색조 백분율, red, green, blue 값 import com. comon. motion. Color;var color:Color = new Color(); color.setTint(0x808080,1);     //첫 번 째 인 자 는 틴 트 컬러 입 니 다.  RGB 값, 두 번 째 매개 변 수 는 tint Multiplier 착색 백분율 로 수치 범위 가 0 에서 1 입 니 다.mc.transform.colorTransform = color; 주: 16 진법 10 진법 trace (0x 808080);   0 x 80 높 은 8 곱 하기 16 에 낮은 값 을 더 할 수도 있 습 니 다.      10 진 16 진 trace (((128). toString (16);   128 나 누 기 16 으로 고위 치 를 얻 을 수도 있 고 나머지 는 낮은 수치 다.         //128 은 참고 일 뿐 R, G, B 분량 별 10 진법 값 은 각각 0 ~ 255 의 임 의 수 이다.고급: (영화 색상 을 바 꾸 는 다른 방식) import com. comon. motion. Color;var color:Color = new Color(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0, blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0, greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0); 8 개의 매개 변수 가 있 는데 각각 ARGB 각 분량 의 충전 백분율 이 고 수치 0 ~ 1 이다. 그 다음 네 개 는 ARGB 각 분량 의 편 이 량 이 고 수치 - 255 ~ 255 이다.mc.transform.colorTransform = color; 알파 값: (영화 투명도 변경) mc. alpha = 1;   //수치 0 ~ 1;ColorTransform 클래스 를 통 해 영화 의 색상 값 을 변경 합 니 다.import flash.geom.ColorTransform; var colorInfo:ColorTransform = new ColorTransform(); colorInfo.color = 0x808080; mc.transform.colorTransform = colorInfo; ColorTransform 대상 이 디 스 플레이 대상 에 적 용 될 때 다음 과 같은 방법 으로 각 색상 채널 에 새 값 을 계산 합 니 다: 새 빨간색 값 = (옛 빨간색 값 * redMultiplier) + redOffset 새 녹색 값 = (옛 녹색 값 * green Multiplier) + green Offset 새 파란색 값 = (옛 파란색 값 * blue Multiplier) + blue Offset 새 알파 값 = (옛 알파 값 * alpha Multiplier)+ alpha Offset 계산 후 모든 색상 채널 값 이 255 보다 크 면 이 값 은 255 로 설 정 됩 니 다.이 값 이 0 보다 작 으 면 0 으로 설 정 됩 니 다.ColorTransform 대상 을 아래 와 같이 사용 할 수 있 습 니 다. BitmapData 클래스 의 colorTransform () 방법의 colorTransform 매개 변수 에서 Transform 대상 (이 대상 은 대상 의 transform 속성 을 표시 하 는 데 사용 할 수 있 습 니 다) 의 colorTransform 속성 주: new ColorTransform () 구조 함 수 를 사용 하여 ColorTransform 대상 을 만 든 후에 야 ColorTransform 대상 을 조정 할 수 있 습 니 다.
색 변환 은 영화 편집 (예 를 들 어 불 러 온 SWF 대상) 의 배경 색 에 적용 되 지 않 고 영화 편집 에 추 가 된 도형 과 부품 에 만 적 용 됩 니 다.
///********************************  Color.as *****************************************/
package com.common.motion
{
    import flash.display.*;
    import flash.geom.ColorTransform;
    
    
    /**
     * The Color class extends the Flash Player ColorTransform class,
     * adding the ability to control brightness and tint.
     * It also contains static methods for interpolating between two ColorTransform objects
     * or between two color numbers.      */
    public class Color extends ColorTransform
    {
        
        /**
         * Constructor for Color instances.
         *
         * @param redMultiplier The percentage to apply the color, as a decimal value between 0 and 1.
         * @param greenMultiplier The percentage to apply the color, as a decimal value between 0 and 1.
         * @param blueMultiplier The percentage to apply the color, as a decimal value between 0 and 1.
         * @param alphaMultiplier A decimal value that is multiplied with the alpha transparency channel value, as a decimal value between 0 and 1.
         * @param redOffset A number from -255 to 255 that is added to the red channel value after it has been multiplied by the <code>redMultiplier</code> value.
         * @param greenOffset A number from -255 to 255 that is added to the green channel value after it has been multiplied by the <code>greenMultiplier</code> value.
         * @param blueOffset A number from -255 to 255 that is added to the blue channel value after it has been multiplied by the <code>blueMultiplier</code> value.
         * @param alphaOffset A number from -255 to 255 that is added to the alpha channel value after it has been multiplied by the <code>alphaMultiplier</code> value. 
         */
        function Color (redMultiplier:Number=1.0, 
                        greenMultiplier:Number=1.0, 
                        blueMultiplier:Number=1.0, 
                        alphaMultiplier:Number=1.0, 
                        redOffset:Number=0, 
                        greenOffset:Number=0, 
                        blueOffset:Number=0, 
                        alphaOffset:Number=0)
        {
            super(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset);
        }
        
        
        
        /**
         * The percentage of brightness, as a decimal between <code>-1</code> and <code>1</code>.
         * Positive values lighten the object, and a value of <code>1</code> turns the object completely white.
         * Negative values darken the object, and a value of <code>-1</code> turns the object completely black.
         * 
         * @default 0   
         */
        public function get brightness():Number
        {
            return this.redOffset ? (1-this.redMultiplier) : (this.redMultiplier-1);
        }
        
        /**
         * @private (setter)
         */
        public function set brightness(value:Number):void
        {
            if (value > 1) value = 1;
            else if (value < -1) value = -1;
            var percent:Number = 1 - Math.abs(value);
            var offset:Number = 0;
            if (value > 0) offset = value * 255;
            this.redMultiplier = this.greenMultiplier = this.blueMultiplier = percent;
            this.redOffset     = this.greenOffset     = this.blueOffset     = offset;
        }
        
        
        
        /**
         * Sets the tint color and amount at the same time.
         *
         * @param tintColor The tinting color value in the 0xRRGGBB format.
         *
         * @param tintMultiplier The percentage to apply the tint color, as a decimal value between <code>0</code> and <code>1</code>.
         * When <code>tintMultiplier = 0</code>, the target object is its original color and no tint color is visible.
         * When <code>tintMultiplier = 1</code>, the target object is completely tinted and none of its original color is visible.         */
        public function setTint(tintColor:uint, tintMultiplier:Number):void
        {
            this._tintColor = tintColor;
            this._tintMultiplier = tintMultiplier;
            this.redMultiplier = this.greenMultiplier = this.blueMultiplier = 1 - tintMultiplier;
            var r:uint = (tintColor >> 16) & 0xFF;
            var g:uint = (tintColor >>  8) & 0xFF;
            var b:uint =  tintColor        & 0xFF;
            this.redOffset   = Math.round(r * tintMultiplier);
            this.greenOffset = Math.round(g * tintMultiplier);
            this.blueOffset  = Math.round(b * tintMultiplier);
        }    
        
        /**
         * @private
         */
        private var _tintColor:Number = 0x000000;
        
        
        /**
         * The tinting color value in the 0xRRGGBB format.
         * 
         * 
         * @default 0x000000 (black) 
         */
        public function get tintColor():uint
        {
            return this._tintColor;
        }
        
        /**
         * @private (setter)
         */
        public function set tintColor(value:uint):void
        {
            this.setTint(value, this.tintMultiplier);
        }
        
        
        // Capable of deriving a tint color from the color offsets,
        // but the accuracy decreases as the tint multiplier decreases (rounding issues).
        /**
         * @private 
         */
        private function deriveTintColor():uint
        {
            var ratio:Number = 1 / (this.tintMultiplier); 
            var r:uint = Math.round(this.redOffset * ratio);
            var g:uint = Math.round(this.greenOffset * ratio);
            var b:uint = Math.round(this.blueOffset * ratio);
            var colorNum:uint = r<<16 | g<<8 | b;
            return colorNum; 
        }
        
        
        /**
         * @private
         */
        private var _tintMultiplier:Number = 0;
        
        
        /**
         * The percentage to apply the tint color, as a decimal value between <code>0</code> and <code>1</code>.
         * When <code>tintMultiplier = 0</code>, the target object is its original color and no tint color is visible.
         * When <code>tintMultiplier = 1</code>, the target object is completely tinted and none of its original color is visible.
         * @default 0
         */
        public function get tintMultiplier():Number
        {
            return this._tintMultiplier;
        }
        
        /**
         * @private (setter)
         */
        public function set tintMultiplier(value:Number):void
        {
            this.setTint(this.tintColor, value);
        }
        
        
        /**
         * Creates a Color instance from XML.
         *
         * @param xml An E4X XML object containing a <code><color></code> node from Motion XML.
         *
         * @return A Color instance that matches the XML description.       
         */
        public static function fromXML(xml:XML):Color
        {
            return Color((new Color()).parseXML(xml));
        }
        
        
        /**
         * @private
         */
        private function parseXML(xml:XML=null):Color
        {
            if (!xml) return this;
            
            var firstChild:XML = xml.elements()[0];
            if (!firstChild) return this;
            
            //// ATTRIBUTES
            for each (var att:XML in firstChild.attributes())
            {
                var name:String = att.localName();
                if (name == 'tintColor')
                {
                    var tintColorNumber:uint = Number(att.toString()) as uint;
                    this.tintColor = tintColorNumber;
                }
                else
                {
                    this[name] = Number(att.toString());
                }
            }
            
            
            return this;
        }
        
        
        /**
         * Blends smoothly from one ColorTransform object to another.
         *
         * @param fromColor The starting ColorTransform object.
         *
         * @param toColor The ending ColorTransform object.
         *
         * @param progress The percent of the transition as a decimal, where <code>0</code> is the start and <code>1</code> is the end.
         *
         * @return The interpolated ColorTransform object.         
         */
        public static function interpolateTransform(fromColor:ColorTransform, toColor:ColorTransform, progress:Number):ColorTransform
        {
            var q:Number = 1-progress;
            var resultColor:ColorTransform = new ColorTransform
                (
                    fromColor.redMultiplier*q   + toColor.redMultiplier*progress
                    , fromColor.greenMultiplier*q + toColor.greenMultiplier*progress
                    , fromColor.blueMultiplier*q  + toColor.blueMultiplier*progress
                    , fromColor.alphaMultiplier*q + toColor.alphaMultiplier*progress
                    , fromColor.redOffset*q       + toColor.redOffset*progress
                    , fromColor.greenOffset*q     + toColor.greenOffset*progress
                    , fromColor.blueOffset*q      + toColor.blueOffset*progress
                    , fromColor.alphaOffset*q     + toColor.alphaOffset*progress
                )
            return resultColor;        
        }
        
        
        /**
         * Blends smoothly from one color value to another.
         *
         * @param fromColor The starting color value, in the 0xRRGGBB or 0xAARRGGBB format.
         *
         * @param toColor The ending color value, in the 0xRRGGBB or 0xAARRGGBB format.
         *
         * @param progress The percent of the transition as a decimal, where <code>0</code> is the start and <code>1</code> is the end.
         *
         * @return The interpolated color value, in the 0xRRGGBB or 0xAARRGGBB format.     
         */
        public static function interpolateColor(fromColor:uint, toColor:uint, progress:Number):uint
        {
            var q:Number = 1-progress;
            var fromA:uint = (fromColor >> 24) & 0xFF;
            var fromR:uint = (fromColor >> 16) & 0xFF;
            var fromG:uint = (fromColor >>  8) & 0xFF;
            var fromB:uint =  fromColor        & 0xFF;
            
            var toA:uint = (toColor >> 24) & 0xFF;
            var toR:uint = (toColor >> 16) & 0xFF;
            var toG:uint = (toColor >>  8) & 0xFF;
            var toB:uint =  toColor        & 0xFF;
            
            var resultA:uint = fromA*q + toA*progress;
            var resultR:uint = fromR*q + toR*progress;
            var resultG:uint = fromG*q + toG*progress;
            var resultB:uint = fromB*q + toB*progress;
            var resultColor:uint = resultA << 24 | resultR << 16 | resultG << 8 | resultB;
            return resultColor;        
        }
    }
}

좋은 웹페이지 즐겨찾기