2009年9月10日 星期四

使用colorTransform轉換色彩

最近研究了Flash的色彩描述方式,以AS3來說,可以使用colorTransform來轉換物體的顏色,關鍵是紅色部分的程式碼,可視物件(本範例為Loader)中,有個屬性名為"transform",是Transform類別的實體,而transform有個屬性名為"colorTransform",是ColorTransform類別的實體。建立一個ColorTransform物件,再把變更數值過後的ColorTransform物件指定給loader.transform.colorTransform即可,範例如下:

 package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.geom.ColorTransform;
    import flash.net.URLRequest;

    public class ColorEffects extends Sprite
    {
        private var loader:Loader = new Loader();
        private var colorInfo:ColorTransform = new ColorTransform();
      
        public function ColorEffects()
        {
            loader.load(new URLRequest("assets/test.jpg"));
            addChild(loader);
            loader.addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
            loader.addEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
        }
      
        protected function mouseHandler(e:MouseEvent):void
        {
            switch (e.type)
            {
                case MouseEvent.MOUSE_OVER:
                    colorInfo.redMultiplier = 0;
                    colorInfo.greenMultiplier = 0;
                    loader.transform.colorTransform = colorInfo;
                    break;
                  
                case MouseEvent.MOUSE_OUT:
                    colorInfo.redMultiplier = 1;
                    colorInfo.greenMultiplier = 1;
                    loader.transform.colorTransform = colorInfo;
                    break;
                  
                default:
                    break;
            }
        }
    }
}