ゲームのキャラクターであるムービークリップがあります。このムービークリップの中には、アニメーションのある四肢を含むいくつかのムービークリップがあります。gotoAndStop(1); の方法について誰か提案がありますか? すべての手足オブジェクトを手動で呼び出さなくても、キャラクターの内部にあるすべてのムービークリップで?
キャラクターのムービークリップには 4 フレームで合計 20 個のムービークリップが含まれているため、キャラクター内のすべてのムービークリップを停止したいだけです。
ゲームのキャラクターであるムービークリップがあります。このムービークリップの中には、アニメーションのある四肢を含むいくつかのムービークリップがあります。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();