You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript游戏循环中调用随机事件的写法是否为最佳实践?

游戏循环随机生成云朵的代码修正

原代码存在的问题:

  • Math.random 调用错误:Math.random是函数,必须通过Math.random()调用才能生成0到1之间的随机浮点数。原代码里Math.random*100是将函数对象与100相乘,结果是NaN,永远不会等于0,导致createCloud()永远不会被触发。
  • requestAnimationFrame 用法错误:
    1. API名称拼写错误:正确的浏览器API是requestAnimationFrame,不是requestGameAnimation;
    2. 调用方式错误:需要将游戏循环函数的引用传递给requestAnimationFrame,而不是直接调用函数。原写法window.requestGameAnimation.gameloop()完全不符合API规范,会导致循环中断。

修正后的代码:

function gameloop(){
  let r = Math.floor(Math.random() * 100);
  if(r == 0) createCloud();

  render();
  window.requestAnimationFrame(gameloop);
}

额外优化建议:

如果想更直观地控制云朵生成概率,可以直接用随机数与概率值比较,比如要实现1%的生成概率,写成if(Math.random() < 0.01),这样不需要取整,代码更简洁易懂。

内容的提问来源于stack exchange,提问作者Austin Kolongowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:33:16