我正在制作一款小游戏。游戏中有一个商店和一个包;你可以从商店购买物品并将它们放入你的包里。每个项目在游戏中都有自己的东西,并且有两种类型的项目:A)只能由onclick
触发的项目和B)应该不断检查条件的项目,然后只运行一旦。我需要帮助为typeB项创建代码。
<body onload = "docReady()">
<img src = "img1.png" onclick = "buy(item1TypeA)" />
<img src = "img2.png" onclick = "buy(item2TypeA)" />
<img src = "img3.png" onclick = "buy(item1TypeB)" />
<img src = "img4.png" onclick = "buy(item2TypeB)" />
// et cetera //
<ul id = "bagContainer"> // LI items appended here // </ul>
</body>
function docReady()
{
item1 = { type:A, name:1, price:1000 };
item2 = { type:A, name:2, price:2000 };
item3 = { type:B, name:3, price:4000 };
item4 = { type:B, name:4, price:16000 };
// et cetera //
money = 100000;
}
function buy(item)
{
if (money >= item.price)
{
money -= item.price;
if (sameItem == item1)
{
var listItem = document.createElement("li");
listItem.textContent = sameItem.name;
listItem.addEventListener('click', function() { //code1A// });
document.getElementById("bagContainer").appendChild(listItem);
}
if (sameItem == item2)
{
var listItem = document.createElement("li");
listItem.textContent = sameItem.name;
listItem.addEventListener('click', function() { //code2A// });
document.getElementById("bagContainer").appendChild(listItem);
}
// no idea how I could write the code for typeB items //
}
}
typeB项目的代码应该不断检查条件。如果满足条件,则该项应运行其各自的功能。我的问题是试图不断检查;如果我使用while
或if
,那么一旦其功能完成,我将如何阻止代码不断检查?
我怎么能软编码呢?
答案 0 :(得分:1)
您可以创建一个间隔,每隔x个数量(毫秒)检查一个条件,并在满足条件时使用removeInterval
将其删除。要存储删除的时间间隔,可以使用箭头函数保持在同一范围内,以便在interval
的时间间隔内为函数提供。
if (sameItem == item3) {
var listItem = document.createElement("li");
listItem.textContent = sameItem.name;
const interval = window.setInterval(() => {
if (condition) {
//code
window.removeInterval(interval);
}
}, 1000); //or whatever frequency
document.getElementById("bagContainer").appendChild(listItem);
}