Bitmap と Particle (2) ColorTransform
カラーの勉強第2段!!次はColorTransformについて勉強!
ColorTransformについて、ColorMatrixFilterはあくまでフィルター、ColorTransformはプロパティ
プロパティ->詳細->拡張効果の所と同じ場所。
ColorTransformにはややこしい所があって。
DisplayObjectのColorTransformとBitmapDataのColorTransformのでは設定の仕方と具合が少し違うという点
以下のデモは、DisplayObjectとBitmapDataに対して、
ColorTransform(0.5, 0.5, 0.5)を適用したもの(以下コードのコメントアウト適用した場合)
ColorTransform(0.5, 0.5, 0.5)を適用した後に、new ColorTransform(1, 1, 1)を行い色を元に戻そうとしたもの(コードのコメントアウトを取った場合)
以下コードのコメントアウト適用した場合
以下コードのコメントアウトを取った場合
【ColorMatrixFilterとColorTransformはどっちが速い?】
ColorTransformの方がはやい!!
ColorTransformについて、ColorMatrixFilterはあくまでフィルター、ColorTransformはプロパティ
プロパティ->詳細->拡張効果の所と同じ場所。
ColorTransformにはややこしい所があって。
DisplayObjectのColorTransformとBitmapDataのColorTransformのでは設定の仕方と具合が少し違うという点
-
DisplayObjectのColorTransform
- DisplayObject.transform.colorTransform=colorTransformで代入
- ColorTransform(1, 1, 1, 1, 0, 0, 0, 0) でDisplayObjectの元の色に戻すことは可能
-
BitmapDataのColorTransform
- colorTransform(rect:Rectangle, colorTransform:ColorTransform):void
colorTransform() メソッドによるビットマップイメージの特定領域のカラー値を調整 - ColorTransform(1, 1, 1, 1, 0, 0, 0, 0) で色に戻すことは不可能
以下のデモは、DisplayObjectとBitmapDataに対して、
ColorTransform(0.5, 0.5, 0.5)を適用したもの(以下コードのコメントアウト適用した場合)
ColorTransform(0.5, 0.5, 0.5)を適用した後に、new ColorTransform(1, 1, 1)を行い色を元に戻そうとしたもの(コードのコメントアウトを取った場合)
【ColorMatrixFilterとColorTransformはどっちが速い?】
ColorTransformの方がはやい!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | package { import adobe.utils.ProductManager; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.geom.ColorTransform; import flash.geom.Rectangle; import flash.net.URLLoader; import flash.net.URLRequest; import flash.filters.ColorMatrixFilter; import flash.utils.ByteArray; import flash.net.URLLoaderDataFormat; [SWF(width="780", height="300", backgroundColor="0xFFFFFF", frameRate="24")] public class ColorTransForm1 extends Sprite { public function ColorTransForm1() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); var loder:URLLoader = new URLLoader(); loder.dataFormat = URLLoaderDataFormat.BINARY; loder.load(new URLRequest("jupm2.JPG")); loder.addEventListener( Event.COMPLETE, loadCompHandler ); } private function loadCompHandler(e:Event):void { var byteArray:ByteArray = URLLoader(e.target).data; var loder1:Loader = new Loader(); loder1.loadBytes(byteArray); loder1.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadCompHandler); var loder2:Loader = new Loader(); loder2.loadBytes(byteArray); addChild(loder2); loder2.x = 250; var colortras:ColorTransform = new ColorTransform(0.5, 0.5, 0.5); //var colortras2:ColorTransform = new ColorTransform(1, 1, 1); loder2.transform.colorTransform = colortras; //loder2.transform.colorTransform = colortras2; var loder3:Loader = new Loader(); loder3.loadBytes(byteArray); addChild(loder3); loder3.x = 500; colortras.color = 0xFF0000; loder3.transform.colorTransform = colortras; } private function imgLoadCompHandler(e:Event):void { var loder:Loader = Loader(e.target.loader); var bData:BitmapData = new BitmapData(loder.width, loder.height, true, 0x0000FF); var colortras:ColorTransform = new ColorTransform(0.5, 0.5, 0.5); //var colortras2:ColorTransform = new ColorTransform(1, 1, 1); bData.draw(loder); bData.colorTransform(new Rectangle(0, 0, loder.width, loder.height), colortras); //bData.colorTransform(new Rectangle(0, 0, loder.width, loder.height), colortras2); var bmp:Bitmap = new Bitmap(bData); addChild(bmp); } } } |
