AS3围绕其中心点旋转对象

ant*_*son 10 rotation actionscript-3

我希望这个物体围绕它的中心而不是左上角旋转.代码如下所示:

        switch (event.keyCode)
        {
            case 37:
            car.rotation = -90;
               car.x -= 5;
               break;
Run Code Online (Sandbox Code Playgroud)

因此,当我按下左键时,汽车向左转,但现在它向上跳了一点,因为它绕着顶角旋转.

谢谢

Bar*_*klı 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);
}
Run Code Online (Sandbox Code Playgroud)

它将对象的中心转换为0,0然后旋转它然后将其转换回来.


小智 8

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