首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在World.frameCount JS (游戏实验室)中重置Code.org吗?

你能在World.frameCount JS (游戏实验室)中重置Code.org吗?
EN

Stack Overflow用户
提问于 2020-07-14 10:47:31
回答 1查看 240关注 0票数 0

这个问题是为一个游戏,我正在工作在游戏实验室在Code.org。这个游戏就像跳伞游戏,每隔一段时间( 1000到3000毫秒)就会产生障碍。以下是代码:

代码语言:javascript
复制
World.frameRate = 10;
var rects = createGroup();
var timeout = Math.round(randomNumber(800, 3000) / 100) * 100;

function draw() {
  background("white");
  drawSprites();
  if (World.frameCount === Math.round(randomNumber(1000, 3000) / 100) * 100) {
    World.frameCount = 0;
    creation();
  }
}

function creation() {
  var obstacle = createSprite(randomNumber(100, 300), 200, 50, 20);
  obstacle.velocityY = -2;
}
/*
setInterval(function() {
  creation();
}, Math.round(randomNumber(800,3000)/100)*100);
*/

为了创建生成机制,我尝试使用setInterval()setTimeout()函数,但是对于这两个函数,在第一个执行时,它会创建一个随机数,然后继续以相同的间隔生成对象。我找不到任何解决这个问题的方法,所以我转到了World.frameCount。这个概念是可行的,但是由于===运算符,障碍物只会在1到3秒之间产生,3秒后,物体将无法产生。为了解决这个问题,我添加了第9行(World.frameCount = 0;)。当运行时,这会产生一个错误:

代码语言:javascript
复制
ERROR: Line: 9: TypeError: Cannot set property frameCount of #<Object> which has only a getter

我理解此错误是因为您不能更改World.frameCount的值。有什么解决办法吗?我也希望就其他办法提出建议。

下面是Code.org项目的链接:跳伞1.0版

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 11:05:36

我不认为你想设置World.frameCount。如果希望以可变间隔生成对象,请使用以下命令:

代码语言:javascript
复制
(function timeoutHandler() {
  creation();
  setTimeout(timeoutHandler, randomNumber(800,3000)/100)*100);
})();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62893421

复制
相关文章

相似问题

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