您可以在 Code.org JS(游戏实验室)中重置 World.frameCount 吗?
Can you reset World.frameCount in Code.org JS (Game Lab)?
这个问题是针对我在 Code.org 的游戏实验室开发的一款游戏。所讨论的游戏将类似于跳伞游戏,其中障碍物以随机间隔(1000 到 3000 毫秒)产生。这是代码:
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;
)。当 运行 时,会产生错误:
ERROR: Line: 9: TypeError: Cannot set property frameCount of #<Object> which has only a getter
我知道这个错误是因为你不能改变 World.frameCount
的值。有什么解决方法吗?我也很感激任何关于其他方法的建议。
这是 Code.org 项目的 link:Skydive v1.0
我认为你不想设置 World.frameCount
。如果您想以可变间隔生成对象,请使用:
(function timeoutHandler() {
creation();
setTimeout(timeoutHandler, randomNumber(800,3000)/100)*100);
})();
这个问题是针对我在 Code.org 的游戏实验室开发的一款游戏。所讨论的游戏将类似于跳伞游戏,其中障碍物以随机间隔(1000 到 3000 毫秒)产生。这是代码:
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;
)。当 运行 时,会产生错误:
ERROR: Line: 9: TypeError: Cannot set property frameCount of #<Object> which has only a getter
我知道这个错误是因为你不能改变 World.frameCount
的值。有什么解决方法吗?我也很感激任何关于其他方法的建议。
这是 Code.org 项目的 link:Skydive v1.0
我认为你不想设置 World.frameCount
。如果您想以可变间隔生成对象,请使用:
(function timeoutHandler() {
creation();
setTimeout(timeoutHandler, randomNumber(800,3000)/100)*100);
})();