Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проскок кадров при перемещении по таймлайну скриптами (http://www.flasher.ru/forum/showthread.php?t=115936)

DJ_Baton 16.09.2008 00:01

Проскок кадров при перемещении по таймлайну скриптами
 
Скрипты для кнопок плавно перемещающих сцену по таймлайну в заданные координаты.
Имеется таймлайн 40 кадров и скрипт:
Код:

stop();
i = _root._currentframe; //позиция на таймлайне
pos0 = 1; //позиция кнопки сброса
pos1 = 10; //позиция для 1 кнопки
pos2 = 20; //позиция для 2 кнопки
pos3 = 30; //позиция для 3 кнопки
pos4 = 40;//позиция для 4 кнопки


// Кнопка сброса на исходную (1-й кадр)
mb.onRelease = function() {
        onEnterFrame = function () {
                if (_currentframe>pos0) {
                        _root._currentframe = gotoAndStop(i--);
                } else {
                        stop();
                }
        };
};

//Кнопка перехода на 10-й кадр, если уже там (else)
//переходит на ту что была до неё,
//в данной ситуации на 1-й кадр
z1.mb1.onRelease = function() {
        if (_root._currentframe != pos1) {
                onEnterFrame = function () {
                        if (_currentframe=pos1) {
                                stop();
                        }
                        if (_root._currentframe>pos1) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                        if (_root._currentframe<pos1) {
                                gotoAndPlay(i++);
                        }
                };
        } else {
                onEnterFrame = function () {
                        if (_currentframe=pos0) {
                                stop();
                        }
                        if (_root._currentframe>pos0) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                };
        }
};

//Кнопка перехода на 20-й кадр, если уже там (else)
//переходит на ту что была до неё,
//в данной ситуации на 10-й кадр
z2.mb2.onRelease = function() {
        if (_root._currentframe != pos2) {
                onEnterFrame = function () {
                        if (_currentframe=pos2) {
                                stop();
                        }
                        if (_root._currentframe>pos2) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                        if (_root._currentframe<pos2) {
                                gotoAndPlay(i++);
                        }
                };
        } else {
                onEnterFrame = function () {
                        if (_currentframe=pos1) {
                                stop();
                        }
                        if (_root._currentframe>pos1) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                };
        }
};

//Кнопка перехода на 30-й кадр, если уже там (else)
//переходит на ту что была до неё,
//в данной ситуации на 20-й кадр
z3.mb3.onRelease = function() {
        if (_root._currentframe != pos3) {
                onEnterFrame = function () {
                        if (_currentframe=pos3) {
                                stop();
                        }
                        if (_root._currentframe>pos3) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                        if (_root._currentframe<pos3) {
                                gotoAndPlay(i++);
                        }
                };
        } else {
                onEnterFrame = function () {
                        if (_currentframe=pos2) {
                                stop();
                        }
                        if (_root._currentframe>pos2) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                };
        }
};

//Кнопка перехода на 40-й кадр, если уже там (else)
//переходит на ту что была до неё,
//в данной ситуации на 30-й кадр
z4.mb4.onRelease = function() {
        if (_root._currentframe != pos4) {
                onEnterFrame = function () {
                        if (_currentframe=pos4) {
                                stop();
                        }
                        if (_root._currentframe>pos4) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                        if (_root._currentframe<pos4) {
                                gotoAndPlay(i++);
                        }
                };
        } else {
                onEnterFrame = function () {
                        if (_currentframe=pos3) {
                                stop();
                        }
                        if (_root._currentframe!=pos3) {
                                _root._currentframe = gotoAndStop(i--);
                        }
                };
        }
};

Вроде всё работает, всё нормально, пока не столкнулся с такой проблемой - вперед мотает нормально, проверка по _currentframe показывает нужный кадр, но вот при повторном нажатии на кнопки (при повторном должно возвращать на предыдущую позицию) оно переходит, например, не с 20-го на 10-й, а с 20-го на 9-й (с 30 на 19, с 40 на 29)и т.д. т.е. проскакивает на 1 кадр назад больше чем надо, подскажите в чем моя ошибка и как это лечить ?

АПДЕЙТ: Сорри, привязал инпут текст к i чтобы снимать показатели кадров, то походу его глючит, сам скрипт бегает правильно...


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

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