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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.11.2009, 23:31
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 1  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
По умолчанию Горизонтальная фотогалерея: узнать ширину до загрузки или ... как?

Сделал такое:
- из XML-файла получил количество фоток,
- приаттачил в скроллер такое же количество мувиков,
- в них подгружаю фотки.
Все работает, если размеры фоток строго заданного размера.

Цитата:
важно !!!
1) сейчас в галерее СРАЗУ видны контейнеры с текстом и прелодером (а фотки грузятся в фоновом режиме)
2) получаю ширину всего скроллируемого мувика
... как?
Подскажите, как по ходу загрузки фотографий техничнее отпозиционировать приаттаченные мувики по _x?
Ведь ширину фоток НЕЛЬЗЯ узнать до их загрузки (((

Старый 04.11.2009, 23:44
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не аттачте заранее. Аттачте по ходу загрузки.
Напишите функцию nextLoad(), которая бы управляла загрузкой очередной фотки. И в ней, если у вас используется стандартная scrollPane, в процессе загрузки узнавайте ширину вновь загруженной фотки и аттачите в общий конетйнер скроллера новый контейнер для очередной фотки уже с нужным сдвигом.
Ну и redraw(true) в конце.

Старый 04.11.2009, 23:47
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 3  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
не. так не пойдет. ))
зааттаченные мувики должны быть на сцене сразу ВСЕ, как только распарсен ХМЛ, до окончания загрузки фоток.
NB. скроллер у меня свой

Старый 04.11.2009, 23:48
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ну или приаттачте конетйнеры сразу, в конце загрузки пересчитайте координаты и обновите скроллер.

Старый 04.11.2009, 23:52
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 5  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
одна под другую залазит - некрасиво визуально ))
видимо надо както двигать от текущего мувика все последующие

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Свой, не свой, все равно, до загрузки фото вы ее размеры не узнаете.
Поскольку у вас свой скроллер, то вам лучше знать, как его обновить после загрузки всего-всего.
Но по логике, сперва загружайте все, каждую фото делайте невидимой тут же, потом в конце пересчитайте геометрию по неведомому мне алгоритму и сделайте содержимое видимым.

Либо другой вариант:
Загружаете все и сразу, но тут же удаляете, перед этим с них отрисовав битмапу, используя уже известные размеры. Что-то вроде
Код AS1/AS2:
import flash.display.BitmapData;
var picdata:Array = new Array();
.
.
listener.onLoadInit = function(target_mc:MovieClip) {
	var pic:BitmapData = new BitmapData(target_mc._width, target_mc._height, false);	
	pic.draw(target_mc);
	target_mc.unloadMovie();
        picdata[id] = pic;	
};
А потом создаете мувики уже для скроллера с нужными размерами и заполняете битмапой с помощью attachBitmap.


Последний раз редактировалось mooncar; 05.11.2009 в 00:00.
Старый 05.11.2009, 00:04
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 7  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
не хотелось бы нарушать юзабилити запретами, инвизами и тп
заатаченные мувики отображают еще и разный текст + ждут фоток.
А если битмапу, то пока все 100 фоток загрузятся - никто про них может и не узнать )

наверное прийдется после каждой загруженной фотки делать реПозишн всем заатаченным мувикам


Последний раз редактировалось Что такое хорошо?; 05.11.2009 в 00:09.
Старый 05.11.2009, 00:11
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Что значит "нарушать юзабилити"?
То есть если вы хотите, чтобы процесс загрузки сопровождался постепенным появлением очередной фотки? Ну да, юзер должен видеть что-то.
Тогда делайте пересчет положений всех контейнеров после загрузки каждой фотки, напишите функцию пересчета геометриии и вызывайте ее внутри onLoadInit на каждую загрузку.
Кстати, я видел много горизонтальных галерей, где новый изображения, появляясь, двигают соседнние, как бы раздвигают их - это как раз то, что я написал выше.
Только все же я бы сделал это с плавной анимацией раздвижки, чтобы мельтешения не было:
1. Загрузилась очередная фото - появилась поверх или под краями соседей, если они уже есть.
2. Вызывается функция, идет пересчет, высчитываются новые координаты.
3. Новые координаты передаются другой ф-ии, которая с помощью набора Tween двигает соседей и загруженную фото в новые места.
Конечно, только еще нужно как-то предотвращать конфликты, если две фото практически одновременно загрузились. Какой-то таймаут перед их появлением делать.


Последний раз редактировалось mooncar; 05.11.2009 в 00:13.
Старый 05.11.2009, 00:14
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 9  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
ОК. Спасибо.
Хотя с Tween-ом я знаком слабо. Просто какое-то время был во флеш отпуске ))

Старый 05.11.2009, 00:18
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ну тогда через setInterval.
А с Tween все просто:
Код AS1/AS2:
var myTween:Tween = new Tween(target_mc, "_x", mx.transitions.easing.Strong.EasyOut, startX, finishX, time, true);
 
 
//time - в секундах, если последний параметр -  false, то time указывается в количестве кадров.

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

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

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


 


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


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