这是我的第一个问题,如果你在这里指出任何错误,那就太好了,谢谢。
我正在尝试使用jQuery制作游戏。这个想法很简单,在屏幕上你可以看到5个苹果随机生成,一个接一个地开始摔倒,所以玩家必须抓住它们。
即使我使用随机选择而setInterval()
尝试让苹果一次掉落,但所有的苹果都会立即掉落。
显然有些不对劲。我该如何解决?
这里有关于苹果的代码的一些部分。
//apples
game.apples = [];
game.greenApple = true;
game.appleSpeed = 1;
game.count = 2;
game.timeDrop = 1000;
function init() {
for (i = 0; i < 5; i++) {
game.apples.push({
x: Math.floor((Math.random() * game.width / 2) + 150),
y: Math.floor((Math.random() * game.height / 3)),
size: 30,
image: 1,
green: true
});
}
loop();
}
function update() {
var intervalVar = setInterval(function () {
getRandApple()
}, 1000);
function getRandApple() {
var randApple = game.apples[Math.floor(Math.random() * game.apples.length)];
randApple.green = false;
return randApple;
}
for (i in game.apples[i]) {
if (!randApple.green) {
randApple.y += game.appleSpeed;
}
}
});
可在此处找到整个JavaScript文件 - &gt;&gt; fiddle&lt;&lt;
答案 0 :(得分:0)
这是让5个苹果以一定的间隔逐个落下的小提琴,
http://jsfiddle.net/h3m5hqzd/6/
您可以将您的逻辑放入小提琴中的hook()函数中。这就是我所做的,
var appleArray = ['apple1', 'apple2', 'apple3', 'apple4', 'apple5'];
var appleExistArray = [true, true, true, true, true];
var fallenAppleCount = 0;
var refreshIntervalId = setInterval(function () {
while (true) {
// randomIndex will be within 0 to 4
var randomIndex = Math.floor((Math.random() * 5));
if (appleExistArray[randomIndex] === true) {
hook(randomIndex);
appleExistArray[randomIndex] = false;
if (fallenAppleCount++ === 4) {
clearInterval(refreshIntervalId);
}
break;
}
}
}, 1000);
function hook(randomIndex) {
var para = document.createElement("p");
var node = document.createTextNode(appleArray[randomIndex] + ' is falling');
para.appendChild(node);
document.getElementById('msgHolder').appendChild(para);
}