Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #27, ФЕВРАЛЬ 2003 г.

Flash-навигатор

ilich

Спецвыпуск Xakep, номер #027, стр. 027-050-4


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

Забацаем прокрутку так. На каждый раздел, где она должна быть, делается не один, как мы договаривались, а три конечных кадра. Сразу после анимации перехода или прелоадера действие переходит к первому конечному кадру, в котором текстовым полям присваиваются нужные значения. Там же, в этом самом кадре, стоит проверить, может быть у тебя текста достаточно мало и автокастрации не будет. Посмотри, на сколько символов рассчитан твой "text", отними от этого числа по символов пять на каждую строку текстового поля (на случай переноса слов) и смело сравнивай с длиной текста. Если текст меньше, не задумываясь, тащи кнопки прокрутки (предварительно вполне разумно засунутые в мувики по примеру пунктов меню) за край сцены. И в этом же кадре необходимо задать начальное значение для переменной, указывающей шаг прокрутки:

per=0;

//шаг

if (text1<=(7*(43-5))) {

_root.button_up._x=0-_root.button_up._width-10;

_root.button_down._x=0-_root.button_down._width-10;

//проверяем длину текста и переносим кнопки

}

_root.text=text1

//присваиваем текст

Второму конечному кадру дай имя "text1f2". В нем должна быть конструкция, осуществляющая собственно прокрутку:

_root.text.scroll=Number(_root.text.scroll)+per;

А в третьем - gotoAndPlay("text1f2"), и все. Последние два кадра, очевидно, работают в цикле, постоянно прокручивая текст. Но так как шаг равен нулю, мы этого пока не видим. И хорошо.

Кнопки прокрутки. Их должно быть как минимум две. Та, что прокручивает вверх, должна быть в мувике "button_up", та, что вниз - в "button_down". Как расположить их на экране, я полагаю, ты догадываешься. Для верхней пиши:

on (release, releaseOutside) {

_root.per = 0;

}

on (press) {

if (Number(_root.text.scroll)>1) {

_root.per = -1;

}

}

Для нижней:

on (release,releaseOutside) {

_root.per=0

}

on (press) {

if (Number(_root.text.scroll)<Number(_root.text.maxscroll)) {

_root.per=1

}

}

Работает практически так же, как обычная виндовская прокрутка. Если нажали на стрелку вверх, то текст начинает прокручиваться вверх, пока не дойдет до первой строчки. Если на нижнюю - то же самое, только с соответствующими изменениями в направлении прокрутки и ее пределе.

Теперь напряги память и вспомни, что еще нам надо было прокручивать. Правильно, мувик. Сделай два новых слоя над слоем с текстовым полем. И соверши над ними следующее надругательство: верхний из них надо сделать маскирующим для нижнего (залезь в свойства верхнего слоя, там все увидишь). Маскирующий слой должен содержать простой прямоугольник ровно над нашим основным текстовым полем. Получится такой эффект, будто мувик прокручивается в текстовом поле точно так же, как обычный текст других разделов. В нижний тащи мувик, подлежащий прокрутке, располагай его так, чтобы его верхний край совпадал с верхним краем основного текстового поля, и давай ему имя "mov_text2" (типа того раздел второй). В ситуации с мувиком скрипты меняются лишь только в первом и втором конечных кадрах анимации. В первом оставляем присвоение переменной "per" начального значения 0, проверку на высоту мувика и присвоение переменной "mov_y" значения начальной вертикальной координаты мувика:

Назад на стр. 027-050-3  Содержание  Вперед на стр. 027-050-5