这是根上的一个框架上的假体。我想把Carrera(一个宽大的电影)从框架2循环回框架1。(为了测试目的)
这是代码:
if (MovieClip(root).Carrera.currentFrame==2){
MovieClip(root).Carrera.gotoAndPlay(1);
}MovieClip 继续运行,忽略if语句。我在做什么?
发布于 2011-11-25 20:35:13
if语句没有错误,只是当您期望它存在时,就不会对它进行评估。
当您将代码放在一个框架中时,当输入该框架时,它将立即执行。因此,当第一个帧启动时,执行if,其条件当时为false。它永远不会被重新执行,因为你从来没有告诉它。在AS3中没有所谓的“常规”;-)
相反,您可以通过添加事件侦听器来检查每个帧:
addEventListener(Event.ENTER_FRAME, function (e) {
if (MovieClip(root).Carrera.currentFrame==2){
MovieClip(root).Carrera.gotoAndPlay(1);
}
});或者,您可以将gotoAndPlay(1);放在Carrera的第二帧(而不是根)上。
发布于 2011-11-25 20:36:00
您必须理解,您正在运行此if语句,只运行一次。即使卡雷拉剪辑是在第2帧的准确时刻,剪辑将跳到播放1和继续播放-没有什么可以让它再次跳,因此永远不会有一个循环。
为了使其工作,您必须一次又一次地运行这个相同的语句-每次剪辑跳转到一个新的框架。
例如,您可以这样做:(将此脚本附加到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的知识。
发布于 2011-11-25 20:34:35
要测试的东西..。
MoveClip(根)是在执行点定义的吗?
MoveClip(根).Carrera是在执行点定义的吗?
MovieClip(根).Carrera是在玩吗?(或者你在上面叫了stop,所以它只是坐在第1帧中?)
https://stackoverflow.com/questions/8273873
复制相似问题