Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.02.2013, 18:19
Maestro13 вне форума Посмотреть профиль Отправить личное сообщение для Maestro13 Найти все сообщения от Maestro13
  № 1  
Ответить с цитированием
Maestro13

Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
По умолчанию Зависает флешка при динамической загрузке данных

С помощью URLLoader загружается в флешку zip архив. При весе зип архива около 30мб, флешка фризится на несколько секунд. Не понимаю почему это происходит, если по логике URLLoader загружает фоново и это не должно останавливать выполняемый поток приложения.

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

Старый 15.02.2013, 21:45
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Флеш это низкоуровневый язык, тут понятия как поток вообще не существует. Потоками управляет сам процессор так как хочет ( считает нужным ). Ваша проблема редка, обычно (99%) пользователи не натыкаются на эту проблему, но вы ее как раз поймали ) Поздравляю ) Эх JAVA , тебя нам не хваталА)
__________________
Марк Tween

Старый 15.02.2013, 22:18
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Флеш это низкоуровневый язык
Низкоуровневый язык - это ассемблер. АС3 - это язык высокого уровня.
Цитата:
если по логике URLLoader загружает фоново и это не должно останавливать выполняемый поток приложения.
Это проблему можно решить передав обработку архива другому "потоку", точнее другому экземпляру флеш плеера, через Worker, а после обработки забрать уже готовые данные.

Старый 15.02.2013, 22:32
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
caseyryan тьфу описка вышла. А по поводу потоков это бесспорно , их нет.
Почитал про воркер - полная фигня. Очередной псевдо поток, недоязык

http://bitsofinfo.wordpress.com/2008...-actionscript/ вот псевдопоточная система.
__________________
Марк Tween

Старый 16.02.2013, 14:47
Maestro13 вне форума Посмотреть профиль Отправить личное сообщение для Maestro13 Найти все сообщения от Maestro13
  № 5  
Ответить с цитированием
Maestro13

Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
in4core - спасибо за ссылку , буду юзать. Только все равно понять не могу, есть же куча приложений, где графика подгружается в процессе выполнения приложения, и при этом ничего не фризится.

вот код такой:
Код AS3:
var loader:URLLoader=new URLLoader()
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.addEventListener(Event.COMPLETE, libLoadComplete);
loader.load(new URLRequest(newLib.path + RES_EXT+ "?nocache=" + Preloader.VERSION));

Старый 16.02.2013, 15:23
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
А вы уверены, что фриз происходит во время загрузки, а не во время распаковки этих 30 мб?
Сколько процентов успевает показать progressHandler перед тем, как происходит фриз?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.02.2013, 17:35
Maestro13 вне форума Посмотреть профиль Отправить личное сообщение для Maestro13 Найти все сообщения от Maestro13
  № 7  
Ответить с цитированием
Maestro13

Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
progressHandler показывает примерно 15,30,45,60,75,90%? после чего флешка продолжает работать
Цитата:
А вы уверены, что фриз происходит во время загрузки, а не во время распаковки этих 30 мб?
Распаковку архива я отключил даже, без нее фриз не 10 секунд, а секунды 2, но никуда не пропадает.
Я даже ентерфрейм затрейсил. Логи примерно такие:
enter_frame
enter_frame
progress 15%
progress 30%
progress 45%
progress 60%
progress 75%
progress 90%
loadComplete
enter_frame
enter_frame

Старый 16.02.2013, 17:49
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 8  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Неверю. Пойду сделаю тест.
__________________
мой пустой блог

Старый 16.02.2013, 17:56
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от in4core Посмотреть сообщение
caseyryan тьфу описка вышла. А по поводу потоков это бесспорно , их нет.
Почитал про воркер - полная фигня. Очередной псевдо поток, недоязык
Совсем не фигня. Не полноценная многопоточность как в других языках, но и псевдо я бы ту систему не назвал. Распаковка архива в фоне, это как раз то, что можно смело доверить воркеру.

Цитата:
Распаковку архива я отключил даже, без нее фриз не 10 секунд, а секунды 2, но никуда не пропадает.
Это нормальное явление.

Старый 16.02.2013, 19:36
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Maestro13 Посмотреть сообщение
progressHandler показывает примерно 15,30,45,60,75,90%? после чего флешка продолжает работать

Распаковку архива я отключил даже, без нее фриз не 10 секунд, а секунды 2, но никуда не пропадает.
Я даже ентерфрейм затрейсил. Логи примерно такие:
enter_frame
enter_frame
progress 15%
progress 30%
progress 45%
progress 60%
progress 75%
progress 90%
loadComplete
enter_frame
enter_frame
Читаем в справке про событие complete
Цитата:
complete - Отправляется после декодирования всех полученных данных и размещения их в свойстве data объекта URLLoader.
Видимо эти 2 секунды фриза уходят на декодировку и размещение этих 30 мб.

А с распаковкой... Флеш не успел вывести данные о "loadComplete" после "progress 90%", тк см. выше + сразу начал распаковывать архив, отсюда и фриз с ощущением, что он начался распаковывать еще при загрузке.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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