2013-04-03 18 views
10

Bu nesnenin sol üst köşeden ziyade merkezinin etrafında dönmesini istiyorum. YaniAS3 Bir nesneyi merkez noktasının çevresine döndürün

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

i sol tuşuna bastığınızda, araba sola dönerek ama şimdi olduğu gibi onun üst köşede dönen çünkü biraz atlar: kod buna benzemez.

sayesinde

cevap

7

kolay yolu, bu x ve y koordinatları yarı genişlik ve yükseklik özelliklerdir başka, hareketli grafik üzerine araç hareketli grafik/Movieclip eklemektir gerçekleştirmek için. Araç flaşa çekilirse, ortadaki nokta ortada olacak şekilde üst sola da sürükleyebilirsiniz. merkezi etrafında dönecektir

20

şu: O 0,0 nesnenin merkezini çevirir

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); 
} 

sonra döndürün ve sonra geri çevirmek.

+0

çok teşekkür ederim! işe yarıyor !!! –

+0

Her dönme ile biriken ve dönen tekerleğimin azar azar hareket etmesini sağlayan çok küçük bir hata var gibi görünüyor. Görüntüm mükemmel bir şekilde ortalanmış. Çok garip –

+1

@DeyanVitanov son satırı kaldırmayı deneyin. Object.rotation = Math.round (object.rotation); 'ne olduğuna bakın. –