Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Кнопки вперед-назад
Flash Zone Forum > Macromedia Flash > Начинающим
VINegative
Помогите пожалуйста с настройкой кнопок навигации "вперед" "назад".
Разрабатываю обучающую программу. Следование кадров в зависимости от нажатия разных кнопок нелинейное. Т.е. если прописывать кнопке "назад" простую команду "PrevFrame", она действительно будет возвращаться на кадр назад, но не на тот кадр, который проигрывался только что, а на кадр, который в шкале анимации фактически стоит сзади текущего.
Как настроить кнопку навигации, чтобы она возвращала на действительно только что проигранный кадр вне зависимости от его расположения на шкале анимации?

На форуме нашел код, но у меня не пашет. Прописывается следующее:
Код
history = new Array();
history1 = new Array();
function go(where) {
    history.push(where);
    gotoAndStop(where);
}
function goBack() {
    if (history.length<1) {
        return;
    } else if (history.length == 1) {
        gotoAndStop(1);
    }
    discardCurrent = history.pop();
    go(history.pop());
    history1.push(discardCurrent);
}
function goFront() {
    if (history1.length<1) {
        return;
    }
    go(history1.pop());
}

И соответственно на кнопку пишется:
Код
on(release) {
    goFront();
}

Исходник тут http://rghost.ru/38747762
MustLive
Цитата
И соответственно на кнопку пишется:

VINegative

Это ты пишешь на кнопку "Вперёд". А на кнопку "Назад" нужно поставить другой обработчик. При этом рекомендую весь код писать в кадре, без установки кода обработчиков на кнопки.

Вот пример кода для двух кнопок "Вперёд" и "Назад" (у которых указаны имена forward и backward):
Код
_root.forward.onRelease {
    goFront();
}
_root.backward.onRelease {
    goBack();
}


Цитата
На форуме нашел код, но у меня не пашет.

Код выглядит рабочим и он подойдёт для твоей задачи. Лишь добавь обработчик кнопки "Назад" (как я показал выше). Единственное, что в этом коде не показано и что ты должен добавить - это занесение "пройденных кадров" в историю (что нужно делать через указанную функцию go() или самостоятельно заносить в массив history).
VINegative
Цитата(MustLive @ 21.06.2012 - 00:56) *
Код выглядит рабочим и он подойдёт для твоей задачи. Лишь добавь обработчик кнопки "Назад" (как я показал выше). Единственное, что в этом коде не показано и что ты должен добавить - это занесение "пройденных кадров" в историю (что нужно делать через указанную функцию go() или самостоятельно заносить в массив history).


Про кнопку "Назад" - это само собой. Про занесение пройденных кадров в историю - сложней. Я новичок и не понимаю, как это должно прописываться. Если не сложно, подскажите пожалуйста конкретно на моем примере.
MustLive
VINegative, если в том примере кода, что ты нашёл (и частично или целиком процитировал выше) не было кода для занесения текущих страниц в историю, то тот код неполноценен. Ибо это очень важная часть алгоритма.

Существует два подхода для занесения просмотренных страниц в историю:

1. При переходе с первой страниц на все последующие, ты в навигации (в тех кнопках и других элементах, которые используются в качестве навигации) вместо gotoAndStop(кадр) указываешь go(кадр). И таким образом через эту функцию ты заносишь кадры в историю и осуществляешь непосредственный переход.

2. Или же можно в каждом кадре указывать код history.push(_currentframe). Тогда при переходе на этот кадр (в процессе навигации) он будет заносится в историю. Но при этом будет искажаться история в случае использования кнопок "Вперёд" и "Назад" с текущим алгоритмом и нужно будет переделать текущий алгоритм.
Русская версия IP.Board © 2001-2017 IPS, Inc.