У вас есть отличная логика для перемещения между кадрами, но есть много ненужного. Можно получить целочисленное значение текущего кадра за один шаг, используя currentFrame
. Это может помочь немного очистить ваш код, так как вам больше не нужно разбивать строку, а затем преобразовывать в число.
function nextSection(event:MouseEvent):void {
// This allows us to go to the currentframe plus one's label in one line of code
pages_mc.gotoAndStop("sct" + (pages_mc.currentFrame + 1));
}
function prevSection(event:MouseEvent):void {
// This allows us to go to the currentframe minus one's label in one line of code
pages_mc.gotoAndStop("sct" + (pages_mc.currentFrame - 1));
}
Эти функции будут перемещаться к предыдущему и следующему кадрам, но не обладают всеми необходимыми функциями (такими как остановка на кадре 5 или кадре 1 (что не включено в ваш исходный код)) ... I Позвольте добавить, если вы хотите их использовать.
Но есть еще более простой способ перехода между кадрами. AS3 имеет функции nextFrame()
и prevFrame()
, которые точно воспроизводят их звучание (переход к следующему кадру и возврат к предыдущему кадру соответственно).
function nextSection(event:MouseEvent):void {
// This allows us to go to the next frame if we aren't
// already at frame 5
if(pages_mc.currentFrame<5){
pages_mc.nextFrame();
}
}
function prevSection(event:MouseEvent):void {
// This allows us to go to the previous frame if we aren't
// already at frame 1
if(pages_mc.currentFrame>1){
pages_mc.prevFrame();
}
}
Ах. Так освежает. Простой, функциональный код.
Теперь перейдем к вашему актуальному вопросу.
mc.stop();
, (где mc - заполнитель для вашего фактического фрагмента ролика) будет «останавливать» фрагмент ролика. Но слово «стоп» на самом деле не лучшее слово для использования здесь. Функция stop()
в AS3 работает больше как кнопка паузы, «пауза» клипа в кадре, который воспроизводился при вызове функции.
Когда вы вернетесь к кадру любого «приостановленного» фрагмента ролика, основываясь на вашем коде, вы сможете воспроизводить его только с той точки, в которой он был приостановлен.
function nextSection(event:MouseEvent):void {
if(pages_mc.currentFrame<5){
//"pause" the movie clip (only if moving to another frame)
movie1_mc.stop();
pages_mc.nextFrame();
}
}
function prevSection(event:MouseEvent):void {
if(pages_mc.currentFrame>1){
//"pause" the movie clip (only if moving to another frame)
movie1_mc.stop();
pages_mc.prevFrame();
}
}
Я бы рекомендовал использовать некоторые встроенные функции flash для воспроизведения файлов .f4v / .flv. Посмотрите документы Adobe на FLVPlayback и прочитайте этот ответ , чтобы увидеть пример того, как его использовать.
FLVPlayback заменит видеоклипы в вашем файле ссылками на файлы на вашем компьютере (или сервере), что сделает ваш флэш-файл намного меньше. Он также имеет свои собственные элементы управления фильмом, так что пауза, остановка, воспроизведение и т. Д. Сразу становятся доступными, никаких событий слушателя не требуется.
Веселись и экспериментируй!
Надеюсь, это поможет!