web-dev-qa-db-ja.com

AS3オブジェクトをその中心点を中心に回転させます

このオブジェクトを左上隅ではなく、中心を中心に回転させたいです。コードは次のようになります。

        switch (event.keyCode)
        {
            case 37:
            car.rotation = -90;
               car.x -= 5;
               break;

ですから、左のキーを押すと、車は左に曲がりますが、今のところ、上隅を中心に回転しているため、少し跳ね上がります。

ありがとう

10
anton petersson

以下は中心を中心に回転します:

public function rotateAroundCenter(object:DisplayObject, angleDegrees:Number):void {
    if (object.rotation == angleDegrees) {
        return;
    }

    var matrix:Matrix = object.transform.matrix;
    var rect:Rectangle = object.getBounds(object.parent);

    matrix.translate(-(rect.left + (rect.width / 2)), -(rect.top + (rect.height / 2)));
    matrix.rotate((angleDegrees / 180) * Math.PI);
    matrix.translate(rect.left + (rect.width / 2), rect.top + (rect.height / 2));
    object.transform.matrix = matrix;

    object.rotation = Math.round(object.rotation);
}

オブジェクトの中心を0,0に変換してから回転させてから、元に戻します。

21

これを実現する最も簡単な方法は、車のスプライト/ムービークリップを別のスプライトに追加することです。ここで、x座標とy座標は、幅と高さのプロパティの半分です。車がAdobeFlashで描画されている場合は、中心点が中央になるように左上にドラッグすることもできます。

8
Bart