首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AS3中的If语句不工作

AS3中的If语句不工作
EN

Stack Overflow用户
提问于 2011-11-25 20:22:25
回答 3查看 1.1K关注 0票数 1

这是根上的一个框架上的假体。我想把Carrera(一个宽大的电影)从框架2循环回框架1。(为了测试目的)

这是代码:

代码语言:javascript
运行
复制
if (MovieClip(root).Carrera.currentFrame==2){
   MovieClip(root).Carrera.gotoAndPlay(1);
}

MovieClip 继续运行,忽略if语句。我在做什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-25 20:35:13

if语句没有错误,只是当您期望它存在时,就不会对它进行评估。

当您将代码放在一个框架中时,当输入该框架时,它将立即执行。因此,当第一个帧启动时,执行if,其条件当时为false。它永远不会被重新执行,因为你从来没有告诉它。在AS3中没有所谓的“常规”;-)

相反,您可以通过添加事件侦听器来检查每个帧:

代码语言:javascript
运行
复制
addEventListener(Event.ENTER_FRAME, function (e) {
    if (MovieClip(root).Carrera.currentFrame==2){
        MovieClip(root).Carrera.gotoAndPlay(1);
    }
});

或者,您可以将gotoAndPlay(1);放在Carrera的第二帧(而不是根)上。

票数 2
EN

Stack Overflow用户

发布于 2011-11-25 20:36:00

您必须理解,您正在运行此if语句,只运行一次。即使卡雷拉剪辑是在第2帧的准确时刻,剪辑将跳到播放1和继续播放-没有什么可以让它再次跳,因此永远不会有一个循环。

为了使其工作,您必须一次又一次地运行这个相同的语句-每次剪辑跳转到一个新的框架。

例如,您可以这样做:(将此脚本附加到Carrera剪辑的框架2(而不是根!):

代码语言:javascript
运行
复制
gotoAndPlay(1);

或( b)向其添加事件侦听器:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2011-11-25 20:34:35

要测试的东西..。

MoveClip(根)是在执行点定义的吗?

MoveClip(根).Carrera是在执行点定义的吗?

MovieClip(根).Carrera是在玩吗?(或者你在上面叫了stop,所以它只是坐在第1帧中?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8273873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档