2012-03-20 52 views
0

我是新游戏开发人员,我正尝试在flash-cs5中创建一个简单的游戏。我在时间线上创建了3个补间动画。我正在尝试停止特定的补间动画,当其他tweeens正在运行时点击补间的动画片段,当再次单击停止的动画片段时,我想要在其他tweeens正在运行时恢复补间动画。特定动作补间停止&恢复

感谢高级。

回答

0

以下假设您在每个动画补间中都有自己的动画片段。我不知道任何停止一个补间的方法,而让另一个在单个动画片段上播放(或者如果它们各自在主舞台上)。

也就是说,你可以很容易地停止和开始动画。以下是如何停止播放中的补间动画的示例,然后从该点开始恢复。

在此示例中,“myMovieClip”是我们正在使用的影片剪辑。我们将单独留下其余的动画片段,因为它们将继续自己玩。我还假设myMovieClip默认播放。

以下是在AS3中。将其放置在主舞台的“动作”面板上(如果您有多个帧,则为第一帧)。

此外,请确保您已命名您的MovieClip。为此,请在设计模式中单击舞台上的MovieClip,然后单击“属性”。箱子上应该有一个文本输入框。在那里写出您想要的MovieClip名称。

//Declare a boolean variable that determines whether or not the movieclip timeline is playing. 
var ClipPlaying:Boolean = true; 

//Add the mouse click event listener to the movie clip. 
myMovieClip.addEventListener(MouseEvent.CLICK, StopOrStartClip); 

//Declare the function for the above event listener. 
function StopOrStartClip(evt:MouseEvent):void 
{ 
    //Switch statements are my personal favorites...they're more streamlined than if statements. 
    switch(ClipPlaying) 
    { 
     //If the clip is playing it, we stop it and set ClipPlaying to false. 
     case true: 
      myMovieClip.stop(); 
      ClipPlaying = false; 
     break; 
     //If the clip is not playing, we start it and set ClipPlaying to true. 
     case false: 
      myMovieClip.play(); 
      ClipPlaying = true; 
     break; 
    } 
} 

这里要记住的最重要的功能是:

myMovieClip.stop(); 

这在当前位置冻结动画。

myMovieClip.play(); 

这会从您当前的位置恢复您的动画播放。

当您使用其中任何一种时,请记得将“myMovieClip”替换为您的影片剪辑的名称!

顺便说一句,略有无关,我强烈推荐本书ActionScript 3.0 Game Programming University来学习如何创建Flash游戏。

+0

嗨JasonMc92,谢谢你的回复。这是有帮助的,但实际上我想要的是,在舞台上,我有5个补间,当玩家点击其中任何一个动画时必须停止(而其他人正在运行),并且如果相同的影片剪辑正在点击它必须是恢复(不干扰其他电影剪辑)。我在这里给出的例子只有1,所以在我的情况下,我需要5个函数,像这个1,或者我可以在这个函数中使用所有影片剪辑和补间循环。如果是这样,我如何循环所有这些补间。谢谢 – 2012-03-26 01:08:05

+0

好的,我想我知道你在说什么,但是让我检查一下......你有五个动画片段,当你点击一个,当它正在播放时暂停,或者如果它暂停,则恢复,其他不受该点击的影响。正确?如果是这样,我可以编辑来解决这个问题。 – CodeMouse92 2012-03-26 05:09:50

+0

是的,没错。谢谢 – 2012-03-26 09:25:20

0

您实际上不需要5个不同的事件侦听器,函数或变量;你可以只让一个函数来处理这一切:

stage.addEventListener(MouseEvent.CLICK, stageClick); 

function stageClick(event:MouseEvent):void { 

//I prefer "if" statements 

if (event.target == myMovieClip1) stuff here; 
else if (event.target == myMovieClip2) stuff here; 
else if (event.target == myMovieClip3) stuff here; 
else if (event.target == myMovieClip4) stuff here; 
else if (event.target == myMovieClip5) stuff here; 

} 

如果需要,我可以添加更多的细节,但前这个问题是由三年所以可能不会。