特定动作补间停止&恢复

时间:2012-03-20 10:41:56

标签: flash-cs5 flash-cs5.5

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

感谢先进。

2 个答案:

答案 0 :(得分: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游戏。

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

}

如果需要,我可以添加更多详细信息,但这个问题来自三年前,可能不是。