静岡理工科大学 菅沼ホーム ActionScript 目次 索引

Transform クラス

[内容]

  表示オブジェクトには変換マトリックスやカラー変換などに関する情報を保持した Transform オブジェクトが割り当てられています.Transform オブジェクトを操作するには,DisplayObject.transform プロパティを利用します.

継承: Transform → Object

[プロパティ]

[使用例]

  1. Transform クラスの使用例( colorTransform プロパティ)」と,そのプログラム( Transform_color.as )です.
    package
    {
    	import flash.display.Sprite;
    	import flash.display.Bitmap;
    	import flash.display.BitmapData;
    	import flash.geom.ColorTransform;
    
    	[SWF(backgroundColor="0xeeffee", width="300", height="200", frameRate="20")]
    
    	public class Transform_color extends Sprite
    	{
    		public function Transform_color()
    		{
    			init();
    		}
    		
    		private function init():void
    		{
    			var x1 : int, y1 : int;
    			var bmd1 : BitmapData = new BitmapData(stage.stageWidth/2, stage.stageHeight, true, 0x00000000);
    			for(x1 = 25; x1 <= 125; x1++) {
    				for(y1 = 50; y1 < 150; y1++)
    					bmd1.setPixel32(x1, y1, 0xffffff00);
    			}
    			var bmd2 : BitmapData = bmd1.clone();
    			var bm1 : Bitmap = new Bitmap(bmd1);
    			var bm2 : Bitmap = new Bitmap(bmd2);
    			bm2.x = 150;
    			bm2.transform.colorTransform = new ColorTransform(1, 0, 0, 1, 0, 0, 255, 0);
    			addChild(bm1);
    			addChild(bm2);
    		}
    	}
    }
    			

  2. Transform クラスの使用例( matrix プロパティ)」と,そのプログラム( Transform_matrix.as )です.左上は,x 軸方向に 30 ピクセル,y 軸方向に 15 ピクセル移動しています.右上は,x 軸方向に 1.2 倍,y 軸方向に 0.8 倍しています.左下は,座標軸を反時計方向に 30 度回転しています.また,右下は,x 軸に沿って 30 度傾けています.
    package
    {
    	import flash.display.Sprite;
    	import flash.display.Shape;
    	import flash.geom.Matrix;
    
    	[SWF(backgroundColor="0xeeffee", width="400", height="300", frameRate="20")]
    
    	public class Transform_matrix extends Sprite
    	{
    		public function Transform_matrix()
    		{
    			init();
    		}
    		
    		private function init():void
    		{
    			var box11 : Shape = new Shape();
    			box11.graphics.lineStyle(2, 0x000000);
    			box11.graphics.drawRect(50, 37, 100, 75);
    			addChild(box11);
    			trace("box11 : " + box11.transform.pixelBounds);
    
    			var box21 : Shape = new Shape();
    			box21.graphics.lineStyle(2, 0x000000);
    			box21.graphics.drawRect(250, 37, 100, 75);
    			addChild(box21);
    
    			var box31 : Shape = new Shape();
    			box31.graphics.lineStyle(2, 0x000000);
    			box31.graphics.drawRect(50, 187, 100, 75);
    			addChild(box31);
    
    			var box41 : Shape = new Shape();
    			box41.graphics.lineStyle(2, 0x000000);
    			box41.graphics.drawRect(250, 187, 100, 75);
    			addChild(box41);
    					// 平行移動
    			var box12 : Shape = new Shape();
    			box12.graphics.lineStyle(2, 0xff0000);
    			box12.graphics.drawRect(50, 37, 100, 75);
    			addChild(box12);
    			box12.transform.matrix = new Matrix(1, 0, 0, 1, 30, 15);
    			trace("box12 : " + box12.transform.pixelBounds);
    					// 拡大・縮小
    			var box22 : Shape = new Shape();
    			box22.graphics.lineStyle(2, 0xff0000);
    			box22.graphics.drawRect(0, 0, 100, 75);
    			addChild(box22);
    			box22.transform.matrix = new Matrix(1.2, 0, 0, 0.8, 0, 0);
    			box22.x = 250;
    			box22.y = 37;
    			trace("box22 : " + box22.transform.pixelBounds);
    					// 回転( 30 度)
    			var box32 : Shape = new Shape();
    			box32.graphics.lineStyle(2, 0xff0000);
    			box32.graphics.drawRect(0, 0, 100, 75);
    			addChild(box32);
    			var ang : Number = 30.0 * Math.PI / 180.0;
    			box32.transform.matrix = new Matrix(Math.cos(ang), Math.sin(ang), -Math.sin(ang), Math.cos(ang), 0, 0);
    			box32.x = 50;
    			box32.y = 187;
    			trace("box32 : " + box32.transform.pixelBounds);
    					// 傾斜( 30 度)
    			var box42 : Shape = new Shape();
    			box42.graphics.lineStyle(2, 0xff0000);
    			box42.graphics.drawRect(0, 0, 100, 75);
    			addChild(box42);
    			box42.transform.matrix = new Matrix(1, 0, Math.tan(ang), 1, 0, 0);
    			box42.x = 250;
    			box42.y = 187;
    			trace("box42 : " + box42.transform.pixelBounds);
    		}
    	}
    }
    			

      変換前及び変換後の各オブジェクトの大きさは以下のようになります.
    	box11 : (x=49, y=36, w=102, h=77)
    	box12 : (x=79, y=51, w=102, h=77)
    	box22 : (x=248, y=36, w=123, h=62)
    	box32 : (x=11, y=185, w=127, h=118)
    	box42 : (x=248, y=186, w=147, h=77)
    			

[参照]

ColorTransform クラスMatrix クラス

静岡理工科大学 菅沼ホーム ActionScript 目次 索引