AS3围绕其中心点旋转对象

时间:2013-04-03 13:48:15

标签: actionscript-3 rotation

我希望此对象围绕其中心而不是左上角旋转。 代码如下所示:

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

因此,当我按下左键时,汽车向左转,但现在它会跳起来,因为它绕着顶角旋转。

由于

2 个答案:

答案 0 :(得分:21)

以下内容围绕中心旋转:

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然后旋转它然后将其转换回来。

答案 1 :(得分:8)

实现此目的的最简单方法是将汽车精灵/ movieclip添加到另一个精灵上,其中x和y坐标是宽度和高度属性的一半。如果用adobe flash绘制汽车,你也可以将它拖到左上角,这样中心点就在中间。