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


嘿,我

做了一个游戏,我遇到了一些问题:当我的资源加载时(图像 *.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.2K,13=85.4K,15=338.7K,20=3.9K,21=524,22=61.2K,23=87.3K,24=16.5K
虚拟机:-RR

上面的代码重复了好几次。有谁知道这是什么意思。我提到我加载、调整大小和绘制了很多图片(如 100 张)来动漫一些动物并拍摄它们。有时我的屏幕会因为这个原因而冻结:
JPGENC 78 ms
JPGENC 7 毫秒
JPGENC 0 毫秒
JPGENC 70 ms
JPGENC 0 毫秒
JPGENC 0 毫秒
JPGENC 70 ms
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.draw位图(int x,int y,int width,int height,位图位图,int left,int top);


所以,如果有人理解我说的话,请帮助我。多谢

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

如果您需要开始游戏,

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

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

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

最新更新