まずは,
お題 インスタンスがドラッグで回り放すと滑る
課題は大きくふたつある。第1は,
課題の第2は,
2次元平面のインスタンスを任意の座標で回すには
ということで,
すると,
それではドラッグは一旦脇に置いて,
Matrixオブジェクト.translate(x座標, y座標)
Matrixオブジェクト.rotate(ラジアン角)
以下のスクリプト1を回したいMovieClipシンボルのフレームアクションに書くと,
スクリプト1 マウスプレスした座標でインスタンスを回す
// フレームアクション: マウスプレスした座標で回すMovieClipシンボル
var nX:Number;
var nY:Number;
var angularVelocity:Number = 5 * Math.PI / 180;
addEventListener(MouseEvent.MOUSE_DOWN, xMouseDown);
function xMouseDown(eventObject:MouseEvent):void {
nX = parent.mouseX;
nY = parent.mouseY;
addEventListener(Event.ENTER_FRAME, xDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, xMouseUp);
}
function xMouseUp(eventObject:MouseEvent):void {
removeEventListener(Event.ENTER_FRAME, xDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, xMouseUp);
}
function xDrag(eventObject:Event):void {
var myMatrix:Matrix = transform.matrix;
myMatrix.translate(-nX, -nY);
myMatrix.rotate(angularVelocity);
myMatrix.translate(nX, nY);
transform.matrix = myMatrix; // Matrixオブジェクトを再設定
}
インスタンスをクリックする
回転のアニメーションを行うリスナー関数
この座標変換の手順は,