2017-01-24 10 views
1

Извините, что это так специфично, но я прочесал столько страниц, видео и учебников и не могу понять это.Как играть в анимацию, а затем воспроизводить реверс при наведении курсора, начинать играть до тех пор, пока не закончите с помощью Adobe Animate (Flash)?

У меня есть все мои анимации в MovieClip. В клипе также находится кнопка размера белого квадрата с именем экземпляра «btn». На главном этапе у меня есть второй слой под названием «действия» со следующим кодом, применяемым к первому (и только) кадру. Это не работает. Вообще. (ОГРОМНЫЙ) ТИА

stop(); // this will stop the movie from playing at the start 

btn.addEventListener((MouseEvent.ROLL_OVER, playMovie); 
btn.addEventListener((MouseEvent.ROLL_OUT, stopMovie); 

function playMovie(evt:MouseEvent):void { 
play(); 
} 

function stopMovie(evt:MouseEvent):void { 
stop(); 
} 

ответ

2

Проблема заключается в том, когда вы говорите play(); или stop();, какой объект вы действительно командует? Ваша playMovie функция может быть в теории, используемой для управления многими MovieClips сразу, по-разному, поэтому конкретно с вашими командами ...

btn.play(); //start the playback of "btn" MC 
btn.stop(); //stop the playback of "btn" MC 

рассмотреть также с помощью MOUSE_OVER/OUT вместо ROLL_OVER/OUT и т.д., но все, что работает вы.

Для реверсирования вы будете использовать btn.prevFrame(); вместе с функцией события ENTER_FRAME. Эта функция считывает параметры вашего документа для FPS. Например, если вы установите 30 кадров в секунду, то любые инструкции, которые вы вводите внутри функции события, будут обрабатываться 30 раз в секунду.

Посмотрите другие Answer за советом по поводу отмены воспроизведения MovieClip.

+0

+1 Это лучший способ достичь этого. @VCOne Вы также можете использовать таймер в сочетании с булевым значением и использовать nextFrame и prevFrame, если хотите изменить скорость анимации. Не забывайте, что updateAfterEvent в этом случае. – tatactic

+0

Итак, я понял, что 50% этих ответов. Я обновил свой код до этого, но понятия не имею, как собрать часть preFrame. Я извиняюсь «stop(); // это остановит фильм играть на старте 'btn.addEventListener ((MouseEvent.ROLL_OVER, playMovie); btn.addEventListener ((MouseEvent.ROLL_OUT, stopMovie); функция playMovie (ЭВТ: MouseEvent): void { play(); } Функция stopMovie (evt: MouseEvent): void { stop(); } –

1

@ VC.One правильно в том, как вы должны реализовать решения по вашему вопросу, однако в ответ на ваш комментарий на их ответ, я думал, что показать, как реализовать это в полной мере для вас - упаковывают они надевают» т.

var removeUpdate = false; 
btn.addEventListener(MouseEvent.MOUSE_OVER, playMovie); 
btn.addEventListener(MouseEvent.MOUSE_OUT, stopMovie); 

function playMovie(evt:MouseEvent):void { 

    // Stop rewinding the movie clip and play it 
    if(removeUpdate){ 
     stage.removeEventListener(Event.ENTER_FRAME, update); 
     removeUpdate = false; 
    } 
    // play our button 
    btn.play(); 
} 

function stopMovie(evt:MouseEvent):void { 
    // stop our button 
    btn.stop(); 
    // ... and rewind it 
    stage.addEventListener(Event.ENTER_FRAME, update); 
    removeUpdate = true; 
} 

function update(evt: Event){ 
    // moves the button movie clip backwards one frame. 
    btn.prevFrame(); 

    // If we have finished rewinding the movie clip, then stop 
    if(btn.currentFrame == 1){ 
     stage.removeEventListener(Event.ENTER_FRAME, update); 
     removeUpdate = false; 
    } 
} 

Важно, чтобы удалить событие обновления, потому что если вы этого не сделаете, фильм никогда не будет играть снова, потому что она будет идти на один кадр вперед, а затем обратно каждый кадр из-за; btn.play(); btn.prevFrame();