2013-04-03 83 views
10

我希望此對象圍繞其中心而不是左上角旋轉。 的代碼看起來是這樣的:AS3圍繞其中心點旋轉對象

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

所以當我按下左鍵,汽車左轉,但因爲它是現在,因爲它圍繞右上角旋轉跳了一下。

感謝

回答

7

最簡單的方法來完成,這是你的車精靈/影片剪輯添加到另一個精靈,其中x和y座標是width和height屬性的一半。如果汽車使用Adobe Flash進行繪製,您還可以將其拖動到左上方,以使中心位於中間。

20

下面將圍繞中心旋轉:

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,然後旋轉,然後將其轉換回。

+0

非常感謝!有用 !!! –

+0

似乎有一個非常小的錯誤,積累與每一個旋轉,它讓我的旋轉輪一點一點地移動。我的形象完美中心。非常奇怪 –

+1

@DeyanVitanov嘗試刪除最後一行'object.rotation = Math.round(object.rotation);'看看會發生什麼。 –