【问题标题】:How to play animation and then play reverse on hover, start playing again until end on hover out using in Adobe Animate (Flash)?如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adob​​e Animate (Flash) 中使用悬停结束?
【发布时间】:2017-06-08 17:08:31
【问题描述】:

抱歉,这太具体了,但我浏览了很多页面、视频和教程,但无法弄清楚。

我的所有动画都包含在一个 MovieClip 中。在影片剪辑中还有一个舞台大小的白色方形按钮,实例名称为“btn”。回到主舞台,我有一个名为“动作”的第二层,下面的代码应用于第一个(也是唯一一个)帧。它不工作。完全没有。 (巨大的)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();
}

【问题讨论】:

    标签: actionscript-3 flash animation adobe


    【解决方案1】:

    问题是当你说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 次。

    请参阅其他Answer,了解有关反转影片剪辑播放的建议。

    【讨论】:

    • +1 这是实现这一目标的最佳方式。 @VCOne如果您想更改动画的速度,您也可以使用与布尔值关联的计时器并使用 nextFrame 和 prevFrame 。在这种情况下不要忘记 updateAfterEvent。
    • 所以我理解了这些回复的 50%。我将代码更新为此,但不知道如何将 preFrame 部分放在一起。我很抱歉'stop(); // 这将在开始时停止播放电影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】:

    @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();

    【讨论】:

      猜你喜欢
      • 2017-06-07
      • 2020-07-22
      • 1970-01-01
      • 2015-09-16
      • 2012-02-09
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 2015-04-16
      相关资源
      最近更新 更多