我在此论坛帖How to stop all child movieclips inside a movieclip in AS3?
中有相同的问题除了我的要求是当用户点击暂停按钮时,当前帧保持影片剪辑子元素应该是gotoAndStop和25帧。
此外我正在使用计时器功能,因此当用户点击暂停按钮计时器应该停止时。这实际上在我添加以下代码myTimer.stop();
时有效,但是如果我点击了播放按钮,我会把这个代码myTimer.start();
。问题来自myTimer.start();
函数,它实际上是重新启动计时器,但我需要恢复计时器。
可以帮助我摆脱这些问题。 ASAP的
答案 0 :(得分:2)
您可以使用递归:
function stopAll(parent:DisplayObjectContainer){
for(var i:int = 0; i < parent.numChildren; i++){
var child = parent.getChildAt(i);
if(child.hasOwnProperty('stop')){
child.stop();
}
if(child.hasOwnProperty('numChildren')){
stopAll(child);
}
}
}
指定按钮:
yourButton.addEventListener(MouseEvent.CLICK, onClick)
function onClick(e:MouseEvent){
stopAll(youMainMovieClip);
}
答案 1 :(得分:1)
要停止所有儿童动画片段,您可以使用您在问题中链接的答案中提供的代码:
yourButton.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void {
stopAllClips(yourMovieClip);
}
function stopAllClips(mc:MovieClip):void
{
var n:int = mc.numChildren;
for (var i:int=0;i<n;i++)
{
var clip:MovieClip = mc.getChildAt(i) as MovieClip;
if (clip && clip.name != 'mc_2')
clip.gotoAndStop(2);
}
}
为了'恢复'你的计时器,你需要保留一个变量,这样你就可以再次“恢复”。 像这样:
var tempTimerCount:int = 0;
var timer:Timer = new Timer(1000);
timer.start();
然后当你想要停止时:
tempTimerCount += timer.currentCount;
timer.stop();
开始后你想拥有该计时器的值,你需要得到timer.currentCount + tempTimerCount
;
希望它有所帮助。
答案 2 :(得分:0)
尝试使用此代码100%
将此代码放在主时间轴中并使用鼠标事件调用 的 MovieClip_name.stopAllClips(); 强>
MovieClip.prototype.stopAllClips = function():void {
var mc:MovieClip = this;
var n:int = mc.numChildren;
mc.stop();
for (var i:int=0; i<n; i++) {
var clip:MovieClip = mc.getChildAt(i) as MovieClip;
if (clip) {
clip.stop();
clip.stopAllClips();
}
} }