AS3読み込んだ物の基準点を中心に

ずっとなぞだった、読み込んだ物の基準点を左上から変える方法。

http://itpro.nikkeibp.co.jp/article/COLUMN/20081215/321381/?ST=swd-tech&P=3

こっちの方が良いかも
http://blog.cellfusion.jp/archives/633/
http://blog.garden-place.jp/oborobeer/item_169.html

このままでも構わないのですが,やはり中心点を基準に移動や回転をできるようにしたいなあ,という場合もあります。そんなケースでは,ちょっと贅沢な気も しますが,Bitmapが中心に来るような形でSpriteに配置してしまい,そのSpriteを移動させたり回転させるのが良いでしょう。

[sourcecode language=”java”]
//画像を表示できるようにBitmapを生成
var bmp:Bitmap = new Bitmap(new CatImage(0,0));
//画像の中心が(0,0)の位置に来るように座標を設定
bmp.x = -bmp.width/2;
bmp.y = -bmp.height/2;
//Spriteに配置する
var sprite:Sprite = new Sprite();
sprite.addChild(bmp);
//あとはspriteの座標や角度を変更すればOK
addChild(sprite);
sprite.x = 160;
sprite.y = 130;
sprite.rotation = 30;
//中心点がわかりやすいようにShapeも追加
var shape:Shape = sprite.addChild(new Shape()) as Shape;
shape.graphics.beginFill(0xFF0000,0.5)
shape.graphics.drawCircle(0,0,5)
[/sourcecode]

「MatrixTransformerクラス」を利用する方法

[sourcecode language=”java”]
//MatrixTransformerをインポート
import fl.motion.MatrixTransformer;

//画像を表示できるようにBitmapを生成
var bmp:Bitmap = new Bitmap(new CatImage(0,0));
//座標を設定
bmp.x = 160 – bmp.width/2;
bmp.y = 130 – bmp.height/2;
//画面に配置する
addChild(bmp);

//centerPointの座標を基準点のように見なして30度回転成
var mat:Matrix = bmp.transform.matrix;
MatrixTransformer.rotateAroundExternalPoint(mat, centerPoint.x, centerPoint.y, 30);
bmp.transform.matrix = mat;[/sourcecode]