75 уроков по Photoshop на русском языке



Создаем полосу прокрутки в Flash МХ - часть 4


Мы дополним функцию прокрутки scrollIt следующим кодом, который нужно поместить прямо под строкой "w_field.scroll += pressed;":

if (!dragging) {
if (w_field.scroll <= 1) {
scroll_thumb._y = scroll_thumb.min_y;
} else if (w_field.scroll >= w_field.maxscroll){
scroll_thumb._y = scroll_thumb.max_y;
} else {
scroll_thumb._y += scroll_thumb.inc*pressed;
scroll_thumb.checkPos();
}
}

И, наконец, чтобы инициировать кнопку прокрутки и оптимизировать прокрутку, добавьте этот код во втором кадре над строкой "play() action":

if (!scroll_thumb.initiated) {
scroll_thumb.initiate();
}
if (Math.abs(scroll_thumb._y - scroll_thumb.max_y) < 1) {
w_field.scroll = w_field.maxscroll;
} else if (Math.abs(scroll_thumb._y - scroll_thumb.min_y) < 1) {
w_field.scroll = 1;
}

Я знаю, что вы уже устали от бесконечного кода. Но потерпите немного - конец уже близко. Осталось только сделать так, чтобы прокрутку можно было активировать, кликнув на полосе.

Доработка полосы прокрутки

Собственно, полоса прокрутки уже есть - "scroll_track". Осталось только добавить следующий код:

scroll_track.useHandCursor = false;
scroll_track.onPress = function () {
rec_y = _root._ymouse - this._parent._y;
if (rec_y > scroll_thumb._y) {
pressed = 5;
} else {
pressed = -5;
}
scrollIt();
checkIfPressed = setInterval(callBack, 500);
}
scroll_track.onRelease = scroll_track.onReleaseOutside = stopScroll;

Обратите внимание, что значение "5" в коде - на один меньше, чем максимальное число строк текста, отображаемой за один раз. Если в вашем текстовом поле помещается 20 строк, то подставьте в код значения 19 и -19.

Ниже я еще раз привожу использованные коды.

Я не буду повторять код полностью и включу некоторые комментарии для большей ясности.

Верхний уровень
Кадр 1, "functions".

//Отображается текст в поле. Определяется, нужен скроллинг или нет.
function showText(message) {
main.w_field.text = message;
if (main.w_field.maxscroll > main.w_field.scroll) {
main.gotoAndPlay("scroll_loop");
}
}




Содержание  Назад  Вперед