gpt4 book ai didi

javascript - 条件为假时如何暂停

转载 作者:行者123 更新时间:2023-11-29 23:16:12 25 4
gpt4 key购买 nike

我正在制作游戏,我想在一个条件为真和一个表达式运行之间有一个暂停。下面的注释行向您展示了我想要暂停的地方,我想要的种类暂停是这样的(这是行不通的):

while (bullet.yPos >= 0) {}; //Tried, failed

所以我希望我的代码在 bullet.yPos 大于或等于 0 时停止,然后在 时继续bullet.yPos 小于 0。

bullet.hidden = true;
//I want the pause here, and the line below to be executed when bullet.yPos is less than 0
bullet.hidden = false;

我应该怎么做?

编辑:这里是相关的方法:

check: function() {

for (var i = 0; i < this.aliens.length; i++) {

var item = this.aliens[i];

if ((bullet.lockedXPos >= item.xPos) && (bullet.lockedXPos <= item.xPos + this.size) && (bullet.yPos >= item.yPos) && (bullet.yPos <= item.yPos + this.size)) {

item.hit = true;
bullet.hidden = true;
while (bullet.yPos >= 0) {};
bullet.hidden = false;


}

}

},

最佳答案

您可以与实例一起创建 Promise。我在这里进行了简化,但总体思路就在那里。

const yGreaterThanZero, { resolve } = new Promise();

现在,在您提供的方法中,您可以使用 await yGreaterThanZero,它完全符合您的预期

check: async function() {

for (var i = 0; i < this.aliens.length; i++) {

var item = this.aliens[i];

if ((bullet.lockedXPos >= item.xPos) && (bullet.lockedXPos <= item.xPos + this.size) && (bullet.yPos >= item.yPos) && (bullet.yPos <= item.yPos + this.size)) {

item.hit = true;
bullet.hidden = true;
// while (bullet.yPos >= 0) {};
await yGreaterThanZero; // this bit here is key
bullet.hidden = false;

}

}

},

此外,在更新 bullet.yPos 的地方,您需要添加以下内容:

if (bullet.yPos >= 0) resolve();

当然,变量名应该是语义化的,所以你不应该只称它为resolve。但是,只要您还告诉 JS 何时该条件发生,这就足以等待特定条件。

重要说明:该函数是 async 的,因此您需要在使用它的地方调整其他代码位,因此您正在等待(并根据需要等待这些函数) .

关于javascript - 条件为假时如何暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com