Форум 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=215628)

Godwarlock 10.07.2018 21:01

Проблема с прогресс баром
 
Всем привет. Столкнулся с такой проблемой. После распаковки текстур, они забиваются в текстурные аталсы, через for each
Код AS3:

countLoaded = 0;
                        for each(var resource_data:DResource in Assets.resources)
                        {
 
                                var texture:Texture = Texture.fromBitmapData(resource_data.bmpd);
                                var texture_atlas:TextureAtlas = new TextureAtlas(texture, resource_data.xml);
                                _asset.addTextureAtlas(resource_data.name, texture_atlas);
                                _core.t_preloader.update(countLoaded, max_count_fin);//Вот тут проблема.
                                countLoaded++;
 
                        }

Функция изменения прогресс-бара
Код AS3:

public function update(min:int,max:int):void 
                {
                        var percent:Number = min / max;
                        bg_mask.scaleX = percent;
                        txt_progress.text = int(percent * 100) + "%";
                }

Дело в том, что вывод % происходит только после того, как все ресурсы забьются в атласы. В конечном итоге он с 0% сразу пишет 100%. Такое чувство, что рендер не успевает обработать строку. Я пробовал добавить ожидание, после каждого обновления
Код AS3:

public function update(min:int,max:int):void 
                {
                        var percent:Number = min / max;
                        bg_mask.scaleX = percent;
                        txt_progress.text = int(percent * 100) + "%";
                        LUtil.sleep(1000);
                }

Но это тоже не сработало. Текстовое поле и маска обновляется только в конце цикла. Как исправить эту проблему, кто знает?

Wolsh 11.07.2018 00:29

И что это? Имитация загрузки?
Чтобы "обновлялось" изображение (прогрессбара), нужно вызывать апдейт в разных "кадрах". Код цикла, естественно, выполняется за один кадр ВЕСЬ. А нужно каждый апдейт вызывать в новом кадре (не обязательно в следующем, ибо 30-40 апдейтов за секунду ты не шибко то рассмотришь).

Godwarlock 11.07.2018 01:02

Понял. Спасибо. Решил через ENTER_FRAME.


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

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