0

我有一个电影剪辑,它是游戏中的角色。在这个movieclips 中有几个movieclips,其中包含具有动画的肢体。那么有人对如何 gotoAndStop(1) 提出建议吗?在角色内部的所有电影剪辑上,而不必手动调用每个肢体对象?

角色动画剪辑总共包含 4 帧上的 20 个动画剪辑,所以我只想停止角色内部的所有动画剪辑。

4

2 回答 2

4

如果我理解正确(即:停止另一个影片剪辑中的所有影片剪辑),这应该有效:

function stopAllClips(mc:MovieClip):void
{
    var n:int = mc.numChildren;
    for (var i:int=0;i<n;i++)
    {
        var clip:MoviceClip = mc.getChildAt(i) as MovieClip;
        if (clip)
            clip.gotoAndStop(1);
    }
}

就这样称呼它:

stopAllClips(yourMovieClip);

yourMovieClip 是角色。


编辑

从 Flash Player 11.8 / AIR 3.8 开始,所有 DisplayObjectContainer 都有一个内置方法,称为stopAllMovieClips

commonParent.stopAllMovieClips();

请记住,这将递归地停止所有孩子和孙子,这与仅停止直接孩子的原始答案不同。

于 2013-02-15T14:36:01.437 回答
1

我认为最简单的方法:

// MovieClip propotype function that stop all running clips (current and inside clips)
MovieClip.prototype.stopAllClips = function():void {
    var mc:MovieClip = this;
    var n:int = mc.numChildren;
    mc.gotoAndStop(1);
    for (var i:int=0; i<n; i++) {
        var clip:MovieClip = mc.getChildAt(i) as MovieClip;
        if (clip) {
            clip.gotoAndStop(1);
            clip.stopAllClips();
        }
    }
}

所以它是递归的,并且可以从 MovieClip 本身调用:

myMovieClip.stopAllClips(); // Stop the clip and inner clips

编辑

从 Flash Player 11.8 / AIR 3.8 开始,所有 DisplayObjectContainer 都有一个内置方法,称为stopAllMovieClips

commonParent.stopAllMovieClips();
于 2014-05-04T17:29:23.947 回答