10

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

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

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

谢谢

4

2 回答 2

21

以下将围绕 center 旋转:

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);
    var centerX = rect.left + (rect.width / 2);
    var centerY = rect.top + (rect.height / 2);
    matrix.translate(-centerX, -centerY);
    matrix.rotate((angleDegrees / 180) * Math.PI);
    matrix.translate(centerX, centerY);
    object.transform.matrix = matrix;
    
    object.rotation = Math.round(object.rotation);
}
    

它将对象的中心平移到 0,0,然后旋转它,然后再平移回来。

于 2013-04-03T14:19:05.663 回答
8

完成此操作的最简单方法是将您的汽车精灵/电影剪辑添加到另一个精灵上,其中 x 和 y 坐标是宽度和高度属性的一半。如果汽车是在 adobe flash 中绘制的,您也可以将其拖到左上角,使中心点位于中间。

于 2013-04-03T13:55:43.350 回答