我發現了一些很好的資源,可以在android中旋轉位圖,而在網絡中也可以。我接近讓我的代碼工作,但顯然我不完全理解Matrix Translations的工作原理。以下是我的精靈類的三個主要功能。在添加東西以促進矩陣旋轉之前,THey工作得很好(即在onDraw中,我只用x,y和矩陣來調用draw)。我寫了一些測試代碼來添加一個精靈,並且將它從0重新旋轉到360並且再次回到0。它導致它像旋轉一些奇怪的點一樣旋轉。在現實中,我希望它只是坐在那裏,旋:在Android中旋轉一個位圖,但沒有視圖的動畫
public void Rotate_Sprite(int transform, int deg)
{
int spriteCenterX = x+(width/2);
int spriteCenterY = y+(height/2);
mMatrix.setRotate(deg, spriteCenterX, spriteCenterY);
}
public void Draw_Sprite(Canvas c) {
//c.drawBitmap(images[curr_frame], x, y, null); //this worked great esp in move sprite
c.drawBitmap(images[curr_frame], mMatrix, null);
}
public void Create_Sprite(blah blah) {
...
...
mMatrix = new Matrix();
mMatrix.reset();
}
public int Move_Sprite() {
//with the matrix stuff, I assume I need a translate. But it does't work right
//for me at all.
int lastx=this.x;
int lasty=this.y;
this.x+=this.vx;
this.y+=this.vy;
mMatrix.postTranslate(lastX-x,lastY-y); //doesn't work at all
}
我沒有找到這個 J2me like reference here.雖然它似乎有我所有的精靈我呼籲在軌道上旋轉圍繞一個點。
這似乎並不奏效。如果你在一個矩陣上調用.setTranslate,然後加上.postRotate,你只需要旋轉,即使它不圍繞指定的中心旋轉。對圖像的大小或形狀有任何要求嗎? – 2010-11-29 01:58:39
您可能想要轉換爲objectX-objectRadius,objectY-objectRadius然後執行旋轉。 – 2010-12-01 00:29:35