ホーム > AS3 > Bitmap と Particle (2) ColorTransform

Bitmap と Particle (2) ColorTransform

2009 年 6 月 19 日 コメントをどうぞ コメント
カラーの勉強第2段!!次はColorTransformについて勉強!
ColorTransformについて、ColorMatrixFilterはあくまでフィルター、ColorTransformはプロパティ
プロパティ->詳細->拡張効果の所と同じ場所。
ColorTransformにはややこしい所があって。
DisplayObjectのColorTransformとBitmapDataのColorTransformのでは設定の仕方と具合が少し違うという点

    DisplayObjectのColorTransform

  1. DisplayObject.transform.colorTransform=colorTransformで代入

  2. ColorTransform(1, 1, 1, 1, 0, 0, 0, 0) でDisplayObjectの元の色に戻すことは可能
    BitmapDataのColorTransform

  1. colorTransform(rect:Rectangle, colorTransform:ColorTransform):void
    colorTransform() メソッドによるビットマップイメージの特定領域のカラー値を調整

  2. 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);
		}
 
	}
 
}




Bookmark and Share

関連する投稿

  1. コメントはまだありません。
  1. トラックバックはまだありません。