PDA

Просмотр полной версии : Динамическое изменение координат, а зависимости от ширины сцены.


storm_
08.11.2008, 16:51
Дорогие флешеры.
Помогите разобраться.

Ситуация в следующем:
На сцену благодаря счетчику, загрузчику и хмл загружаются изображения и выстраиваются, как вагоны, один за одним. Выстраиваются исходя из собственной ширины, переменной отступа «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;
}
}
}

Как быть? Помогите плиз.

aksios
08.11.2008, 22:06
Я не понял, а как Вы определяете сколько картинок должно быть видно и соответственно, как изменится интервал между ними?

Wolsh
09.11.2008, 13:15
В первом цикле прибавляем ширину следующей картинки к общей сумме и сравниваем с шириной видимой области. Если при добавлении очередной картинки сумма ширин + минимальный отступ*(текущее количество картинок - 1) стала больше области, эта картинка "лишняя", сохраняем количество и ширину без нее и выходим из первого цикла.
Вычитаем из ширины области ширину влезающих картинок, получаем остаток - делим его на количество влезающих - получаем просвет.
Запускаем второй цикл и расставляем все картинки с этим просветом.

storm_
12.11.2008, 04:02
Wolsh, Спасибо! Огромное.