簡體   English   中英

代碼使用矩陣旋轉位圖導致強制關閉

[英]Code to rotate a bitmap using Matrix causing force close

我正在做一個簡單的游戲,球在斜坡上滾動,必須通過跳躍來避開障礙物。 當我嘗試使用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的位圖沒有按我的意願旋轉。 它只是從屏幕上掉出來,似乎位圖的大小已增加。 我必須在幾秒鍾后強行關閉它。
我見過其他旋轉位圖問題,但它們對我也不起作用。 提前致謝。

您一直在旋轉具有相同值( 10 )的Matrix 這就是為什么球不旋轉的原因。 而是執行以下操作: mtx.postRotate(deg);

另外,一個一般性的評論:我猜您正在繪制生成的旋轉球bm 如果您要在其他線程上繪制球,那么您應該首先查看的是確保您的線程對bm具有獨占訪問權,以便在bm=rotatedBMP;新值影響球時不會渲染球。 bm=rotatedBMP;

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

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

代碼現在運行良好。 不管怎么說,多謝拉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM