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

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

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

Регистрация: Apr 2007
Сообщений: 34
Question Загрузка и прорисовка изображений.

Всем прив. Помогите пожалуйста, думаю многим будет интересно. Вобщем ниже кусок моего кода..
С его помощью грузятся картинки в мувик.
Проблема - загрузка происходит долго, даже если флешка запускаеться второй раз и картинки из кеша цикл бежит оч медленно... По 10 в секунду, примерно несмотря на то что большинство одинаковых.
И иногда уже по окончанию загрузки,когда прелоадер прячется рисунки появляются поочереди наглазах.


Код:
myListener.onLoadInit = function(target_mc:MovieClip) {
	if (nowload < kolload) {
		nowload += 1;
		k = masW[nowload];
		l = masK[nowload];
		my_mcl.loadClip(masT[nowload], _root[l][k]);
	} else {
		_root.toplay1 = 1;
		_root.toplay = 1;
	}
};
my_mcl.addListener(myListener);

function printloc(src:String, posx:String, posy:String, ido:Number, posz:String) {
	_root[posz][oname].removeMovieClip();
	_root[posz].createEmptyMovieClip(oname, ido+500);
	_root[posz][oname]._x = int(posx);
	_root[posz][oname]._y = int(posy);
	if (kolload == 0) {
		my_mcl.loadClip(src, _root[posz][oname]);
		kolload = 1;
		masT[kolload] = src;
		masW[kolload] = oname;
		masK[kolload] = posz;
	} else {
		kolload += 1;
		masT[kolload] = src;
		masW[kolload] = oname;
		masK[kolload] = posz;
	}
}
printloc( - в цыкле из ХМЛ.

Старый 15.09.2008, 13:02
Da_Demon вне форума Посмотреть профиль Отправить личное сообщение для Da_Demon Найти все сообщения от Da_Demon
  № 2  
Ответить с цитированием
Da_Demon

Регистрация: Apr 2007
Сообщений: 34
Скорость цикла увеличил смешным образом - фпс в 50 поставил. Хотя каким образом эт на код повлиять могло не догадываюсь.

Но тем не мение чем быстрее происходит загрузка рисунков тем больше вероятность того что они прорисовываться на екране будут рывками.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если честно, Da_Demon, я голову сломал пытаясь понять этот код. Несмотря на потрясающую ритмичность, он совершенно нечитабелен)))) Может потому что я понятия не имею кто такой masW и с чем едят oname? Посему не знаю в чем тут проблема, но так, замечание общего характера.
Зачем Вы повторяете блок
Код:
masT[kolload] = src;
masW[kolload] = oname;
masK[kolload] = posz;
в блоках условия, если он не зависит от условия? Вынесите его за if else.
Реально совершенно невозможно догадаться о значениях всех этих десятков переменных, которые Вы используете. Как результат - Вы, скорее всего, не получите ответа, хотя сама тема одна из любимейших на этом форуме)))
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 15.09.2008 в 14:41.
Старый 15.09.2008, 16:38
Da_Demon вне форума Посмотреть профиль Отправить личное сообщение для Da_Demon Найти все сообщения от Da_Demon
  № 4  
Ответить с цитированием
Da_Demon

Регистрация: Apr 2007
Сообщений: 34
В том то и дело что не в переменных и даже не в коде суть, На всякий случай его разместил. Со скоростью разобрался.
Проблема свелась к простому.
Грузим толпу картинок в один мувик и потом те-же в другой.
В первом случае понятно появляются по мере загрузки, но во втором тоже не одновременно, уходит время на саму прорисовку изображений - как его посчитать и дождаться окончания.?

В выложенном коде убрал просто лишние фрагменты. Конечно, вполне может быть что и есть нерациональности местами, но сути это не меняет.


Последний раз редактировалось Da_Demon; 15.09.2008 в 17:24.
Старый 15.09.2008, 18:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1) А, простите, что за странная необходимость грузить картинки второй раз? Я бы еще понял - клипы, но изображения-то зачем? Это уже совсем не мелкая проблема с оптимизацией...
2) Что значит как посчитать и дождаться окончания? Окончание - событие onLoadInit. Вы же его используете в своем (?) коде!
__________________
Reality.getBounds(this);

Старый 16.09.2008, 02:57
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 6  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
2) Что значит как посчитать и дождаться окончания? Окончание - событие onLoadInit. Вы же его используете в своем (?) коде!
нет, Wolsh, не совсем так
Дело в том, что флешу и правда нужно время на отрисовку
Особенно заметно при изменении размеров УЖЕ загруженной картинки
Выход есть - на мой взгляд это BitmapData
Т.е. я Вам, Da Demon, предлагаю вместо повторной загрузки картинки сделать вот что:
-загрузить один раз картинку
-сохранить её как BitmapData (надеюсь, хелп у Вас есть)
-отрисовывать её (битмап дату) каждый раз когда надо отобразить картинку
-использовать updateAfterEvent() (независимо от частоты кадров перерендер экрана)
__________________
...вселенская грусть

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А, вон о чем речь. Ну этого уж точно не посчитать - у когото пень 133-й, у когото кор2квад (наверно поэтому я сразу и не понял, что за задержка)).
По поводу битмапдата - не буду утверждать, что избавит от описанных задержек, тут наверно от организации все зависит, но, собственно, именно битмапДату имел в виду, когда возмущался )) двойной закачкой. Мне можно, я сам когда-то такую фигню сделал с двойной загрузкой, с ней и пришел в первый раз на форум - три года назад))) С тех пор здесь масса решений с битмапДатой появилась, я сам пару галлерей выкладывал. Поиск.
__________________
Reality.getBounds(this);

Старый 16.09.2008, 14:44
Da_Demon вне форума Посмотреть профиль Отправить личное сообщение для Da_Demon Найти все сообщения от Da_Demon
  № 8  
Ответить с цитированием
Da_Demon

Регистрация: Apr 2007
Сообщений: 34
1) А, простите, что за странная необходимость грузить картинки второй раз? Я бы еще понял - клипы, но изображения-то зачем? Это уже совсем не мелкая проблема с оптимизацией...
2) Что значит как посчитать и дождаться окончания? Окончание - событие onLoadInit. Вы же его используете в своем (?) коде!

Нет) второй загрузки нет никакой. Просто написал способ проблему показать. Я о втором посещении например... Тоесть если картинки грузяться с сервера - на это уходит время и они успевают прорисоватся.
Если страничка посещаеться второй рас и картинки есть в кеше, то на загрузку время не уходит вообще, onLoadInit срабатывает и все пересчитывает мол загрузил,
прелоадер как следствие прячется, а на экране во всю идет строительство.

Цитата:
Ну этого уж точно не посчитать - у когото пень 133-й.
Wolsh Попробуй подгрузить во флеш ролик 300 штук пнг картинок с альфаканалом. пусть даже одинаковых.

2gloomyBrain с битмапдатой, несовсем удобно картинки оч разные, в том числе и анимации и флешки маленькие...

Можно конечно решить проблему простой задержкой секунды в 2-3 после загрузки, но эт выход който некрасивый имхо. Ктому-же вдруг у кого-то действительно IBM-I..IV

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Wolsh Попробуй подгрузить во флеш ролик 300 штук пнг картинок с альфаканалом. пусть даже одинаковых.
Ну я и говорю проблемы с организацией))))) Я бы и хтмл страницу нафиг послал, начни она грузить 300 картинок.
__________________
Reality.getBounds(this);

Старый 17.09.2008, 00:58
Da_Demon вне форума Посмотреть профиль Отправить личное сообщение для Da_Demon Найти все сообщения от Da_Demon
  № 10  
Ответить с цитированием
Da_Demon

Регистрация: Apr 2007
Сообщений: 34
Цитата:
Ну я и говорю проблемы с организацией))))) Я бы и хтмл страницу нафиг послал, начни она грузить 300 картинок.
Да почти любая, где фон фон из одной картинки размером в 2пх.
Так вот во флеше так не выходит если картинка эта тоже в swf и клип в котором она множиться нужно двигать.

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

Теги
загрузка , картинки

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

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


 


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


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