2011-12-04 33 views
0

我正在一個簡單的遊戲中,一個球在斜坡上翻滾並且必須通過跳躍來避開障礙物。當我嘗試使用Matrix旋轉球對象時,問題就出現了。我正在使用以下代碼: -使用矩陣旋轉位圖的代碼導致力量關閉

private void rotateMe() { 
    if(jump==0){ 
     Matrix mtx=new Matrix(); 
     mtx.postRotate(deg); 
     Bitmap rotatedBMP=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), mtx, false); 
     deg=deg+1; //deg=0 in beginning 
     bm=rotatedBMP; 
    } 
} 

此方法寫入ball的類中,該方法由另一個方法move()內部調用。位圖bm不像我想要的那樣旋轉。它剛剛脫離屏幕,看起來像位圖的大小已經增加。幾秒鐘後我必須強行關閉它。
我見過其他旋轉位圖問題,但它們也不適合我。 在此先感謝。

+0

你可以請張貼圖紙代碼嗎? – GETah

回答

0

反正我自己找到了答案。我現在使用的代碼如下(對於那些有同樣問題的人)

Matrix mtx=new Matrix(); 
mtx.postRotate(deg,25,25); 
mtx.postTranslate(x, y); 
c.drawBitmap(bm, mtx, paint); 
deg=deg-10; 

代碼現在運行良好。 無論如何感謝。

+0

我在博客中描述瞭解決方案,如果您需要它 - http://android347.wordpress.com/2011/12/09/rotate-a-bitmap-using-matrix/ – noob

1

您一直在旋轉Matrix,其值相同(10)。這就是球不旋轉的原因。 執行以下操作來代替:mtx.postRotate(deg);

而且,一般的一句話:我猜你是畫所產生的旋轉球bm? 如果你正在用不同的線程畫球,那麼你應該看看的第一件事是確保你的線程有獨家訪問bm,這樣你就不會在球受到影響時產生一個新值bm=rotatedBMP;

+0

那麼,即使在那裏使用deg,問題也是一樣的。球從屏幕上掉下來,強制關閉信息顯示出來。 – noob