这是对根上的框架的一个if。我想从第2帧循环 Carrera (一个lenghthy movieclip)回到第1帧。(用于测试目的)
这是代码:
if (MovieClip(root).Carrera.currentFrame==2){
MovieClip(root).Carrera.gotoAndPlay(1);
}
MovieClip 继续,忽略if语句。 我正在做什么工作?
答案 0 :(得分:2)
if
语句没有错误,只是在您预期的时候没有被评估。
当您在框架中放置代码时,它会立即执行,在输入该框架时执行。因此,当第一帧开始时,执行if
,其条件为假。它永远不会被重新执行,因为你永远不会告诉它。 AS3中没有“常规订单”; - )
相反,您可以通过添加事件侦听器来检查每一帧:
addEventListener(Event.ENTER_FRAME, function (e) {
if (MovieClip(root).Carrera.currentFrame==2){
MovieClip(root).Carrera.gotoAndPlay(1);
}
});
或者,您可以将gotoAndPlay(1);
放在Carrera的第二帧(不是根)上。
答案 1 :(得分:2)
您必须了解您只运行此if语句一次。即使Carrera剪辑在该精确时刻处于第2帧,剪辑也将跳转到播放1并继续播放 - 没有任何东西可以让它再次跳转,因此永远不会有循环。
为了使其正常工作,您必须反复运行同一个语句 - 每次剪辑跳转到新帧时。
例如,您可以通过以下方式执行此操作:a)将此脚本附加到Carrera剪辑的第2帧 <(>)(不是根目录!):
gotoAndPlay(1);
或b)向其添加事件监听器:
MovieClip(root).Carrera.addEventListener (Event.ENTER_FRAME,
function ( ev:Event ) : void {
var cl:MovieClip = ev.target as MovieClip;
if (cl.currentFrame == 2) cl.gotoAndPlay(1);
}
还有很多方法可以做到这一点,但除非你要做的事情比不时跳到框架更复杂,我建议你去寻找第一个选项 - 看来你应该学习更多关于ActionScript的内容在尝试事件监听器之前。
答案 2 :(得分:0)
要测试的东西......
是否在执行点定义了MoveClip(root)?
是否在执行点定义了MoveClip(root).Carrera?
是MovieClip(root).Carrera正在播放(或者你叫它停在它上面所以它只是在第1帧中坐着?