Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Понизить приоритет фоновой загрузки? (http://www.flasher.ru/forum/showthread.php?t=178648)

mikhailk 26.04.2012 13:30

Понизить приоритет фоновой загрузки?
 
Перед открытием локации подкачиваются растровые данные для базовой анимации объектов на локации (условно - 200кб). После открытия локации в фоновом режиме подкачиваются растровые данные для расширенной анимации (приблизительно 700-1000кб). Подкачиваются - это значит, что загружаются изображения (10-20кб каждое) и на их основе создаются массивы битмапдат, которые составляют покадровую анимацию объектов по фазам.

Вопрос - можно ли как-то снизить нагрузку на плеер в момент этой загрузки расширенной анимации? Там, конечно, копейки, но на слабых машинах все равно немного чувствуется.

Первая мысль, которая мне приходит в голову - это грузить не непрерывным потоком, а с некоторым таймаутом перед запросом следующего изображения. Например, 1000мс.

Вторая мысль - это сделать в подрузчике старт-стопный механизм, отслеживать запуск ресурсозатратных операций и на этот период останавливать подгрузку, а затем возобновлять (можно, конечно, просто на ФПС повеситься, но практика показывает, что это не надежно).

ЗЫ. Необходимости подгрузить срочно нет. Есть необходимость подгрузить незаметно.

-De- 26.04.2012 14:27

Возможно, тормоза создает больше не загрузка, а раскодирование. Попробовать грузить изображения урллоадером, а раскодировать и создавать битмапы потом.

Inet_PC 26.04.2012 14:32

Возможно тормоза из-за большого количества одновременных загрузок? Может попробовать грузить небольшими партиями 5-7 штук?

mikhailk 26.04.2012 15:14

Нет, там конвейер, грузим в один поток.
Грузим изображение, когда загрузилось - пишем в битмапу и начинаем следующую загрузку.

Насчет раскодирования - не знаю. Я ничего специально не делаю (в смысле, ничего дополнительного не создаю - беру то, что лежит в лоадере):

Код AS3:

private static function onCurrentImageLoaded(e:Event) : void
{
        var image:Bitmap = Bitmap(loader.content);
        var bitmapData:BitmapData = image.bitmapData;                       
 
        currentPhaseImages[currentImageIndex] = bitmapData;
 
        currentImageIndex++;
        if (currentImageIndex < objectsForLoading.length) loadNextImage();
        else onCurrentPhaseLoaded();
}

Грузятся, кстати, png-шки с альфой.

Newred 26.04.2012 15:24

Цитата:

и на их основе создаются массивы битмапдат
Расфасовку массивов делать в несколько подходов ? Сама загрузка тормозить не должна.

mikhailk 26.04.2012 15:34

А собственно, никакой расфасовки-то нет.
Все происходит в той функции, код которой я привел (onCurrentImageLoaded).
Когда все изображения фазы загружены, массив currentPhaseImages передается на хранение, а для загрузки следующей фазы создается новый массив.

K.A.T.A.F.A.L.K.E.R 26.04.2012 15:42

ImageDecodingPolicy смотрели?

mikhailk 26.04.2012 15:50

Цитата:

ImageDecodingPolicy смотрели?
Нет. :)
Ну да, у меня стоит по умолчанию ON_LOAD.
Можно, конечно, поставить ON_DEMAND, но мне это ничего не даст - он же все равно отработает, когда я полезу в loader.content.

Разве что это позволит развести два процесса - загрузки и декодирования...
Но если я запущу массовое декодирование - получатся те же тормоза, вид сбоку.

-De- 26.04.2012 16:03

Ну я в общем про декодирование писал.
Возможно, есть более подходящее время для тормозов у вас, ну там собсно при открытии локации например.

mikhailk 26.04.2012 16:16

Цитата:

Возможно, есть более подходящее время для тормозов у вас, ну там собсно при открытии локации например.
Ха, так именно за время открытия локации борьба и идет.
Для меня было идеально, когда вся анимация закачивалась полностью в момент открытия локации.


Но, в принципе, всем спасибо. причины понятны. Видимо, просто добавлю таймаут при загрузке, тормоза будут разнесены по времени и не так заметны.


Часовой пояс GMT +4, время: 12:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.