Подтвердить что ты не робот

AS3 Поворот объекта вокруг его центральной точки

Я хочу, чтобы этот объект вращался вокруг его центра, а не левого верхнего угла. Код выглядит следующим образом:

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

Итак, когда я нажимаю левую клавишу, автомобиль поворачивается налево, но теперь он немного подпрыгивает, потому что он вращается вокруг верхнего угла.

Спасибо

4b9b3361

Ответ 1

Ниже будут вращаться вокруг центра:

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, затем поворачивает его, а затем переводит обратно.

Ответ 2

Самый простой способ добиться этого - добавить свой автомобиль спрайт /movieclip в другой спрайт, где координаты x и y составляют половину значений ширины и высоты. Если автомобиль нарисован в adobe flash, вы также можете перетащить его в верхний левый угол, чтобы центральная точка была посередине.