我只使用函数进行javascript游戏,我知道它不是最好的方法,但我仍然在学习原型之前使用它们。所以,到目前为止,我有一个请求动画框架,称他自己,所以我的功能继续执行。问题是,当玩家死亡时,我想停止创建敌人,基本上,停止执行功能。更好地向您展示一些代码。 这是我的动画功能:
function animate() {
if (endGame() == true) {
return;
}
requestAnimationFrame(animate);
if(theBird == null && canContinue == true) {
theBird = getBird(); // variavel com a div do bird
setTimeout(createDrake(), Math.round(Math.random() * 800));
setTimeout(createBrick(), Math.round(Math.random() * 3000));
setTimeout(createBoss(), Math.round(1000 + Math.random() * 15000));
setTimeout(createPowerUp(), Math.round(Math.random() * 15000));
document.addEventListener('keydown', onKeyPressed);
document.addEventListener('keyup', onKeyReleased);
}
else {
updateBirdLocation();
updateBirdSpeed();
flyDrakes();
flyBrick();
flyBullets();
flyPowerUp();
flyBoss();
checkBulletCollisions();
checkBulletCollisionsBricks()
checkShipCollision();
checkShipCollisionBricks();
checkShipCollisionBonusP();
checkShipCollisionBoss();
checkBulletCollisionsBoss();
updateScores();
checkEnemyBulletCollisions();
MoveArrayX(bullets2, -10);
MoveArrayX(bullets3, -10);
removePassingElements();
}
}
这个是我的函数stopGame,每当玩家失败时都会调用它:
function endGame() {
Rbutton.style.visibility= "visible";
var RestartDiv = document.createElement("div");
RestartDiv.id = "RestartDiv";
gameDiv.appendChild(RestartDiv);
document.getElementById('RestartDiv').innerHTML += "You scored" + " " + mobHits + " " + "points!";
canContinue = false;
return true;
}
我试图阻止这是动画的第一部分:
function animate() {
if (endGame() == true) {
return;
}
但如果我这样做,我的游戏会停止(就像我想要的那样),但在玩家死亡之前。
除了玩家死亡的功能之外,我没有执行任何游戏。我该如何解决这个问题?
谢谢
编辑:这是我检测玩家死亡的一个例子:
function checkShipCollisionBoss() {
for (var k=0; k<bossArray.length; k++) {
if ((isCollide(BirdsDiv, bossArray[k]) ) == true){
endGame();
}
}
}
isCollide是一个检测碰撞的功能。
答案 0 :(得分:3)
然后这样做,
function endGame() {
if(isCollide()) // return a boolean from this function
{
Rbutton.style.visibility= "visible";
var RestartDiv = document.createElement("div");
RestartDiv.id = "RestartDiv";
gameDiv.appendChild(RestartDiv);
document.getElementById('RestartDiv').innerHTML += "You scored" + " " + mobHits + " " + "points!";
canContinue = false;
return true;
}
return false;
}
还要记住这一点,如果你要检查一个布尔值,你可以简单地给出
if(true) or if (false)
示例,
var bool = true;
if(bool)
// your stuff
答案 1 :(得分:1)
你的endGame函数总是返回true,所以endGame()== true
然后在动画功能中:
function animate() {
if (endGame() == true) {
return;
}
...
}
是:
function animate() {
if (true == true) {
return;
}
...
}
是:
function animate() {
if (true) {
return;
}
...
}
是:
function animate() {
return;
...
}
所以它总是返回