嗨,我做了一个游戏,但遇到了一些问题:当我的资源加载时(图像* .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毫秒
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宽度,int高度,位图位图,int左,int顶部);


因此,如果有人明白我说的话,请帮助我。非常感谢

最佳答案

我怀疑您的屏幕冻结了,因为您在UI线程上执行了太多繁重的工作。

如果您需要开始游戏,那么最好在游戏开始之前创建(读取,调整大小)所有图像。您应尽量避免在游戏过程中加载/调整大小。为此,您可以创建一些游戏初始化任务,该任务在弹出窗口中显示“请稍等,正在初始化...”的弹出窗口下的后台线程上运行。因此,用户会被弹出窗口挡住,只能坐下来等待,然后加载/调整所有图像的大小。然后,您隐藏弹出窗口并真正开始游戏。

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

希望我的回答对您有所帮助。谢谢。

09-10 08:43