MatrixクラスのインスタンスをMovieClipに適用するには、「Matrixクラス(1)」で使用した
「BitmapDataインスタンス.draw(MovieClipインスタンス,Matrixインスタンス)」のほかに、インポートした「flash.geom.Transformクラス」からインスタンスを生成し、それが持つプロパティ「matrix」に代入する方法がある。
【サンプル】
ステージサイズ200x200、ライブラリにビットマップ「icon.jpg」(リンケージ識別子:icon.jpg)。
![]()
icon.jpg
以下、コード。
//クラスインポート
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Transform;
//BitmapDataインスタンス生成
var bmp:BitmapData=new BitmapData();
//BitmapDataインスタンスにロード
bmp=BitmapData.loadBitmap("icon.jpg");
//空のMovieClip生成
var view_mc:MovieClip=_root.createEmptyMovieClip("view_mc",this.getNextHighestDepth);
//MovieClipにアタッチ
view_mc.attachBitmap(bmp,this.getNextHighestDepth);
//Matrixインスタンス生成
var mtrx:Matrix=new Matrix();
//Transformインスタンス生成
var trans:Transform=new Transform(view_mc);
//Matrix設定
mtrx.rotate(Math.PI/180*45);
mtrx.translate((Stage.width-view_mc._width)/2,(Stage.height-view_mc._height)/2);
//Matrixインスタンス適用
trans.matrix=mtrx;
これだけじゃ面白くないので、「onEnterFrame」でMatrixインスタンスのプロパティを変更してみた。
以下、コード。
//クラスインポート
import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Transform;
//BitmapDataインスタンス生成
var bmp:BitmapData=new BitmapData();
//BitmapDataインスタンスにロード
bmp=BitmapData.loadBitmap("icon.jpg");
//空のMovieClip生成
var view_mc:MovieClip=_root.createEmptyMovieClip("view_mc",this.getNextHighestDepth);
//MovieClipにアタッチ
view_mc.attachBitmap(bmp,this.getNextHighestDepth);
//Matrixインスタンス生成
var mtrx:Matrix=new Matrix();
//Transformインスタンス生成
var trans:Transform=new Transform(view_mc);
var angle:Number=0;
//Matrix設定1(view_mcを中央に配置)
mtrx.translate((Stage.width-view_mc._width)/2,(Stage.height-view_mc._height)/2);
onEnterFrame=function():Void{
if(angle>=360){angle=0;}
//Matrix設定2
mtrx.b=Math.tan(Math.PI/180*angle*2);
mtrx.c=Math.tan(Math.PI/180*angle*2);
//Matrixインスタンス適用
trans.matrix=mtrx;
angle++;
}

コメントする