首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AS3中停止电影剪辑中的所有子电影剪辑?

如何在AS3中停止电影剪辑中的所有子电影剪辑?
EN

Stack Overflow用户
提问于 2013-02-15 22:16:59
回答 2查看 10.2K关注 0票数 0

我有一个电影短片,是一个游戏中的角色。在此电影剪辑中,有几个电影剪辑包含具有动画的肢体。那么,有没有人有关于如何在角色内部的所有电影剪辑上执行gotoAndStop(1);的建议,而不必手动调用每个肢体对象?

人物电影剪辑在4帧中总共包含20个电影剪辑,所以我只想停止角色内部的所有电影剪辑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 22:36:01

如果我没理解错的话(例如:停止另一个电影剪辑中的所有电影片段),这应该是可行的:

代码语言:javascript
复制
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);
    }
}

就这么叫吧:

代码语言:javascript
复制
stopAllClips(yourMovieClip);

其中yourMovieClip是字符。

编辑

从Flash player11.8/AIR3.8开始,所有的DisplayObjectContainers都有一个叫做stopAllMovieClips的内置方法。

代码语言:javascript
复制
commonParent.stopAllMovieClips();

请记住,这将递归地停止所有子代和孙子代,而不像最初的答案只停止直接的子代。

票数 4
EN

Stack Overflow用户

发布于 2014-05-05 01:29:24

我认为最简单的方法是:

代码语言:javascript
复制
// 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本身调用:

代码语言:javascript
复制
myMovieClip.stopAllClips(); // Stop the clip and inner clips

编辑

从Flash player11.8/AIR3.8开始,所有的DisplayObjectContainers都有一个叫做stopAllMovieClips的内置方法。

代码语言:javascript
复制
commonParent.stopAllMovieClips();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14896655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档