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

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

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

Регистрация: Jan 2008
Адрес: Minsk Belarus
Сообщений: 107
По умолчанию Динамическое изменение координат, в зависимости от ширины сцены.

Дорогие флешеры.
Помогите разобраться.

Ситуация в следующем:
На сцену благодаря счетчику, загрузчику и хмл загружаются изображения и выстраиваются, как вагоны, один за одним. Выстраиваются исходя из собственной ширины, переменной отступа «margin» и _x предыдущего клипа. После того, как все загрузилось, клипы движутся в противоположную сторону исходя из координат _xmouse.

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

В общем, беда в том, что иногда картинки выстраиваются так, что последняя, видимая на экране, залазит на пределы видимости.
Заказчик сказал, что это нужно исправить, Сделав скрипт, такого характера: если координаты клипа залазят за текущую ширину — расставить клипы так, чтобы тот, который вылазит, отъехал дальше, то есть больше их разбавить. Но не все так просто. Вот код:
Код:
//узнаю текущую ширину сцены:
r = Stage.width;
//задаю отступ картинкам;
margin = 60;
//вычисляем координаты для следующего мувика.
for (b=0; b<col; b++) {
			dl += all["k"+b]._width+margin;
			bb = 1;
			bb += b;
//задаем следующему мувику координаты.
			all["k"+bb]._x = dl;
//теперь отлавливаю событие, на заступ за край картинки: 
 			if (dl-margin>r && dl-margin<r+all["k"+b]._width) {
//Пробую разбавить картинки — все рассыпается в крах…			
				for (m=0; m<bb; m++) {
					mm = 1;
					mm += m;
					all["k"+mm]._x += all["k"+m]._x+margin;
				}
			}
		}
Как быть? Помогите плиз.


Последний раз редактировалось storm_; 08.11.2008 в 17:08.
Старый 08.11.2008, 22:06
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 2  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Я не понял, а как Вы определяете сколько картинок должно быть видно и соответственно, как изменится интервал между ними?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
В первом цикле прибавляем ширину следующей картинки к общей сумме и сравниваем с шириной видимой области. Если при добавлении очередной картинки сумма ширин + минимальный отступ*(текущее количество картинок - 1) стала больше области, эта картинка "лишняя", сохраняем количество и ширину без нее и выходим из первого цикла.
Вычитаем из ширины области ширину влезающих картинок, получаем остаток - делим его на количество влезающих - получаем просвет.
Запускаем второй цикл и расставляем все картинки с этим просветом.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 09.11.2008 в 13:25.
Старый 12.11.2008, 04:02
storm_ вне форума Посмотреть профиль Отправить личное сообщение для storm_ Посетить домашнюю страницу storm_ Найти все сообщения от storm_
  № 4  
Ответить с цитированием
storm_
 
Аватар для storm_

Регистрация: Jan 2008
Адрес: Minsk Belarus
Сообщений: 107
Wolsh, Спасибо! Огромное.

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

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

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


 


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


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