任意の点を中心にムービークリップを回転させる(その1)

基本的な考え方
1.任意の中心点を(x,y)を基準にθ回転させるとすると…
2.まず基準点を基準にθ回転させ
3.回転後の中心点の座標(x1,y1)と回転前の中心点の座標(x,y)の差分だけ移動する。

rotate1.gif

早速クラスを作ってみた

class Rotater {
private var trg:MovieClip;
function Rotater(t:MovieClip) {
trg = t;
}
function rotate(rotation:Number, x:Number, y:Number):Void {
var x1:Number, y1:Number;
var rad1 = Math2.degreesToRadians(trg._rotation);
x1 = x*Math.cos(rad1)-y*Math.sin(rad1);
y1 = x*Math.sin(rad1)+y*Math.cos(rad1);
trg._rotation = rotation;
trg._x += x-x1;
trg._y += y-y1;
}
}

ムービークリップのアクション

var rot = new Rotater(this);
this.onRelease = function() {
rot.rotate(_rotation+10, _xmouse, _ymouse);
};

しかし問題発生
最初の1クリック目はうまく回転するが、2クリック目以降はムービークリップの座標がなんだかおかしい。
[サンプル]

カテゴリー: ActionScript2 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です