Экран зависания Blackberry Issue и медленная загрузка - PullRequest
0 голосов
/ 04 мая 2011

Hy, я создал игру, и у меня есть некоторые проблемы: когда загружаются мои ресурсы (images * .png), это занимает слишком много времени, чем обычно, потому что в моей консоли появились новые строки, и я не знаю, что это значит: RX = 32K, RF = 107.2K, FF = 139.7M, О = 560.8K, ОС = 54.5M, ON = 128.1K, OR = 0, FR = 10K, TR = 6,1м, RR = 0, IS = 13.8К
RA = 48,5 млн, RS = 44.7M, RN = 61K
TA = 11,8, TS = 9M, TN = 31.5K
PA = 832K, PS = 832K, PN = 6.2K
R0 = 207 млн, 1 = 800.2K, 2 = 24K, 3 = 82.3K, 4 = 2,1, 7 = 210.7K, 8 = 3K, 9 = 46.5M, 10 = 19.8K, 11 = 42.3K, 12 = 303,2 К, 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, растровое растровое изображение, int left, int top);


Так что, если кто-то понял, что я сказал, пожалуйста, помогите мне. Большое спасибо

1 Ответ

1 голос
/ 04 мая 2011

Я подозреваю, что ваш экран зависает, потому что вы выполняете слишком много тяжелой работы в потоке пользовательского интерфейса.

Если вам нужно запустить игру, то было бы лучше создать (прочитать, изменить размер) всеизображения до начала игры.Вы должны стараться избегать загрузки / изменения размера во время игры.Для этого вы можете создать задачу по инициализации игры, которая запускается в фоновом потоке под всплывающим окном с надписью что-то вроде «Пожалуйста, подождите, инициализация ...».Таким образом, пользователь блокируется всплывающим окном и просто сидит и ждет, когда вы загрузите / измените размеры всех ваших изображений.Затем вы скрываете всплывающее окно и фактически запускаете игровой процесс.

Другой момент - как вы изменяете размер.Существует более эффективный способ изменить размер изображения - можно изменить размер изображения без необходимости создавать растровый объект (большой и медленный в обработке).Вместо этого используйте EncodedImage.BB API позволяет загружать ресурс изображения как EncodedImage.Затем EncodedImage предоставляет API для изменения своего размера.И, наконец, Graphics имеет API для рисования EncodedImage.

Надеюсь, мой ответ полезен.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...