黑莓问题冻结屏幕和缓慢加载

时间:2011-05-04 11:15:31

标签: java blackberry

Hy,我做了一个游戏而且我遇到了一些问题:当我的资源加载时(图片* .png),它花费的时间太长,因为在我的控制台中出现了新的线条,我不知道是什么意思: 的 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.2K
R0 = 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.2 K,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 ms
JPGENC 70毫秒
JPGENC 0 ms
JPGENC 0 ms
JPGENC 70毫秒
JPGENC 0 ms
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 个答案:

答案 0 :(得分:1)

我怀疑你的屏幕是否冻结,因为你在UI线程上做了太多繁重的工作。

如果您需要开始游戏,那么在游戏开始之前创建(读取,调整大小)所有图像会更好。你应该尽量避免在游戏过程中加载/调整大小。为此,您可以创建一些游戏初始化任务,该任务在后台线程下运行,在弹出窗口中说“请等待,初始化...”。因此,当您加载/调整所有图像时,用户会被弹出窗口阻止,只是坐着等待。然后你隐藏弹出窗口,然后开始玩游戏。

另一点是你如何调整大小。有一种更有效的方法可以调整图像大小 - 可以调整图像大小而无需创建Bitmap对象(处理速度很大且速度很慢)。请改用EncodedImage。 BB API允许将图像资源加载为EncodedImage。然后EncodedImage提供API来调整自身大小。最后Graphics有API来自己绘制EncodedImage

我希望我的回答很有帮助。感谢。