2011-05-04 96 views
0

Hy,我做了一個遊戲,我有一些問題:當我的資源加載(圖像* .png)它需要太長時間然後通常,因爲在我的控制檯出現了新的行, t知道什麼意思: RX = 32K,RF = 107.2K,FF = 139.7M,OF = 560.8K,OS = 54.5M,ON = 128.1K,OR = 0,FR = 10K,TR = 6.1M,RR = 0,IS = 13.8K
RA = 48.5M,RS = 44.7M,RN = 61K
TA = 11.8M,TS = 9M,TN = 31.5K
PA = 832K,PS = 832K,PN = 6.2 K
R 0 = 207M 1 = 800.2K 2 = 24K 3 = 82.3K 4 = 2.1M 7 = 210.7K 8 = 3K 9 = 46.5M 10 = 19.8K 11 = 42.3K, 12 = 303.2K,13 = 85.4K,15 = 338.7K,20 = 3.9K,21 = 524,22 = 61.2K,23 = 87.3K,24 = 16.5K
VM:-RR

和上面的代碼重複多次。 有人知道這是什麼意思。我提到我加載,調整大小和繪製很多圖片(如100)來動畫和動畫一些動物。有時,我的屏幕是因爲這個凍結:
JPGENC 78毫秒
JPGENC 7毫秒
JPGENC 0毫秒
JPGENC 70毫秒
JPGENC 0毫秒
JPGENC 0毫秒
JPGENC 70毫秒
JPGENC 0毫秒
JPGENC 7毫秒
JPGENC 54毫秒
JPGENC 7毫秒
JPGENC 0毫秒
黑莓問題凍結屏幕和緩慢加載

我用這個方法來調整:

public static Bitmap resize(Bitmap png, float scaleX, float scaleY){ 

    Bitmap testBitmap = new Bitmap((int)(png.getWidth()*scaleX), (int)(png.getHeight()*scaleY)); 
    int[] argb = new int[testBitmap.getWidth() * testBitmap.getHeight()]; 
    testBitmap.getARGB(argb, 0, testBitmap.getWidth(), 0, 0, testBitmap.getWidth(), testBitmap.getHeight()); 
    for (int index = 0; index < argb.length; index++) { 
     argb[index] = 0x00000000; 
    } 
    testBitmap.setARGB(argb, 0, (int)(png.getWidth()*scaleX), 0, 0,(int)(png.getWidth()*scaleX), (int)(png.getHeight()*scaleY)); 
    png.scaleInto(testBitmap, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT); 
    return testBitmap; 
} 

和這對附圖中:

圖形的圖形;
graphics.drawBitmap(int x,int y,int width,int height,Bitmap bitmap,int left,int top);


因此,如果有人明白我說的話,請幫助我。非常感謝

回答

1

我懷疑你的屏幕是凍結的,因爲你在UI線程上做了太多繁重的工作。

如果您需要開始遊戲,那麼在遊戲開始之前創建(讀取,調整大小)所有圖像會更好。您應該儘量避免在遊戲過程中加載/調整大小。爲此,您可以創建一些遊戲初始化任務,該任務在彈出窗口後面的後臺線程上運行,如「Please wait,initializing ...」等。因此,用戶使用彈出窗口進行阻止,只是在您加載/調整所有圖像時調整並等待。然後你隱藏彈出窗口並實際啓動遊戲。

另一點是如何調整大小。有一種更有效的方式來調整圖像大小 - 可以調整圖像大小而無需創建Bitmap對象(該圖像處理速度很快並且速度較慢)。改爲使用EncodedImage。 BB API允許加載一個圖像資源,如EncodedImage。然後EncodedImage提供了API來調整其自身。最後Graphics擁有自己繪製EncodedImage的API。

我希望我的回答有幫助。謝謝。

+0

檢查我的另一篇文章調整大小 - http:// stackoverflow。com/questions/5741145/drawing-bitmap-as-mainscreen-background-how-to-stretch-image/5742063#5742063 – 2011-05-09 14:34:46

+0

是的,它的工作原理。但我有一些調整圖片大小的問題: int scaleFactorX = Fixed32.div(Fixed32.toFP(image.getWidth()),Fixed32.toFP((int)(image.getWidth()* scaleX))); int scaleFactorY = Fixed32.div(Fixed32.toFP(image.getHeight()),Fixed32.toFP((int)(image.getHeight()* scaleY))); return image.scaleImage32(scaleFactorX,scaleFactorY); 我在互聯網上搜索了很多,我沒有找到另一種方式,所以規模效果很好,但是當我繪製它時,會將我的圖片切割爲原始尺寸;縮放它的工作,但它只能從圖片內縮放字節,並且圖片保持原始大小。 – AndreiCatalin 2011-05-09 14:51:59

+0

調整大小的方式在幾個項目中適用於我,因此它調整了圖像大小(並繪製了調整大小)。我相信你錯過了簡單,但很難說沒有代碼。最好是發佈另一個StackOverflow問題,發佈實際的代碼(1)調整大小和(2)繪圖。 – 2011-05-09 14:59:26