Korawalker 2020-11-11 00:13 采纳率: 50%
浏览 96
已采纳

CocosCreator里,if这种基本语法竟然会判断错?

问题的现象是if里面两个参数比大小,true才执行一个函数,可是false了也执行了,代码实在太简单了所以一点头绪都没有。

下面就是代码,可以看到我打印了很多东西,我说明一下:

1)console.log(this.timer) 这个打印出来发现都是在稍微超过1的时候执行的;

2)console.log(this.randStarNum()) 这个我设置的是1~5之间的随机整数,打印出来的结果也的确如此,所以只是比1大一点点是不应该进来的,但我的确眼睁睁的看着在this.timer是类似1.1329370000000345的数字,且randStarNum打印出来是2,3,4,5这些数字,

3)console.log(this.timer>this.randStarNum),并且,这一条的打印结果还是false。。。。这。。。我。。。该怎么想

4)console.log(this.timer),最后的这个打印,是timer不断的从0到1.x后归零的过程,这是因为我在spawnNewStar那里把timer置零的关系

所以。。。小白我无能为力了,大佬们帮帮忙吧

 

update: function (dt) {

        if (this.timer > this.randStarNum()){

            console.log(this.timer);

            console.log(this.randStarNum());

            console.log(this.timer>this.randStarNum);

            this.spawnNewStar();

            return;

        };

        this.timer += dt;

        console.log(this.timer);

    },

  • 写回答

2条回答 默认 最新

  • qingyi_0 2020-11-11 09:43
    关注

    判断的this.randStarNum()和打印的this.randStarNum()不一样,你可以这样

    let randNum = this.randStarNum();

    if(this.timer > randNum){

    console.log(randNum );

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Korawalker 2020-11-11 10:38
    关注

    搞明白怎么回事了,qingyi_0大佬说的对,按照我之前的写法,每次都是新执行一次this.random,那样自然是两个值了。

    并且,这样写会导致每一帧都执行一次this.random,所以就很容易随出1,那么只要timer超过1,再来几帧就会出现一次true了,这个和我的初衷是不符的,我要把this.randStarNum挪出去,在别的地方赋好值,把值传进来。

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Tpad api账户 api口令
  • ¥30 ppt进度条制作,vba语言
  • ¥15 stc12c5a60s2单片机测光敏ADC
  • ¥15 生信simpleaffy包下载
  • ¥15 请教一下simulink中S函数相关问题
  • ¥15 在二层网络中,掩码存在包含关系即可通信
  • ¥15 端口转发器解析失败不知道电脑设置了啥
  • ¥15 Latex算法流程图行号自定义
  • ¥15 关于#python#的问题:我在自己的电脑上运行起来总是报错,希望能给我一个详细的教程,(开发工具-github)
  • ¥40 基于51单片机实现球赛计分器功能