如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adobe Animate (Flash) 中使用悬停结束?
Posted
技术标签:
【中文标题】如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adobe Animate (Flash) 中使用悬停结束?【英文标题】:How to play animation and then play reverse on hover, start playing again until end on hover out using in Adobe 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();
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于如何播放动画,然后在悬停时反向播放,再次开始播放,直到在 Adobe Animate (Flash) 中使用悬停结束?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Adobe Animate 中悬停时反向播放动画?