| 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 чтобы снимать показатели кадров, то походу его глючит, сам скрипт бегает правильно...
|