2011-05-04 75 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