我有一个电影剪辑,它是游戏中的角色。在这个movieclips 中有几个movieclips,其中包含具有动画的肢体。那么有人对如何 gotoAndStop(1) 提出建议吗?在角色内部的所有电影剪辑上,而不必手动调用每个肢体对象?
角色动画剪辑总共包含 4 帧上的 20 个动画剪辑,所以我只想停止角色内部的所有动画剪辑。
我有一个电影剪辑,它是游戏中的角色。在这个movieclips 中有几个movieclips,其中包含具有动画的肢体。那么有人对如何 gotoAndStop(1) 提出建议吗?在角色内部的所有电影剪辑上,而不必手动调用每个肢体对象?
角色动画剪辑总共包含 4 帧上的 20 个动画剪辑,所以我只想停止角色内部的所有动画剪辑。
如果我理解正确(即:停止另一个影片剪辑中的所有影片剪辑),这应该有效:
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();
请记住,这将递归地停止所有孩子和孙子,这与仅停止直接孩子的原始答案不同。
我认为最简单的方法:
// 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();