我有一个动画片段,它是游戏中的角色。在这个动画片段中,有几个动画片段包含有动画的肢体。那么有没有人建议如何gotoAndStop(1);在角色里面的所有影片剪辑上,而不必手动调用每个肢体对象?
角色动画片段在4帧中总共包含20个动画片段,因此我只想停止角色内的所有动画片段。
答案 0 :(得分:3)
如果我理解正确(即:在另一个动画片段中停止所有动画片段),这应该有效:
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();
请记住,这会递归地阻止所有的孩子和孙子,不像原来的答案只会阻止直系孩子。
答案 1 :(得分: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();