如何播放动画,然后在悬停时反向播放,再次开始播放,直到在Adobe Animate(Flash)中使用?

时间:2017-01-24 02:33:24

标签: actionscript-3 flash animation adobe

对不起,这是如此具体,但我已经梳理了很多页面,视频和教程,无法弄清楚这一点。

我在MovieClip中拥有所有动画。在影片剪辑中也是一个舞台大小的白色方形按钮,实例名称为“btn”。回到主舞台上,我有一个名为“actions”的第二层,下面的代码应用于第一个(也是唯一一个)帧。它不起作用。完全没有。 (巨大的)tia

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 个答案:

答案 0 :(得分:2)

问题是当你说play();stop();你真正指挥哪个对象时?您的playMovie函数理论上可用于以不同方式同时控制多个MovieClip,因此请特定于您的命令......

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次。

有关撤消MovieClip播放的建议,请参阅此其他Answer

答案 1 :(得分: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();