我不知道如何以随机的时间间隔移除痣,有什么想法吗?指令是......剩下的几个任务之一是随机出现的痣,随机消失!每个随机添加的痣也应在单独随机时间后消失。
function timeDecrease(){
$("#timer").show();
$("#timer").html(time + " seconds left")
time -= 1;
if (time >0)
{
t = setTimeout("timeDecrease()",1000);
}
else time = 0;
};
function randomMole(min,max){
return Math.floor(Math.random() * (max - min + 1)) + min;
};
function addMole(){
yPos = getY();
xPos = getX();
$("#gamespace").append('<img class= "Image" img src="img/mole.png"
style ="top:'+yPos+'px; bottom:
'+xPos+'px;left:'+xPos+'px;right:'+yPos+'px;"/>');
moreMoles = setTimeout(addMole,randomMole(0,2000));
答案 0 :(得分:0)
在addMole
函数中,存储对新痣的引用并设置一个计时器以将其删除。
let newMole = $(`<img
class="Image"
src="img/mole.png"
style="top: ${yPos}px; left: ${xPos}px;"
>`);
$("#gamespace").append(newMole);
setTimeout(newMole.remove.bind(newMole), randomMole(1000, 2000));
moreMoles = setTimeout(addMole,randomMole(0,2000));
我们使用template literals因为它们比连接字符串的伤害要小。 newMole.remove()
会从DOM中移除新的鼹鼠,但将其称为setTimeout
回调无法正常工作。它将由window
调用,因此this
关键字将设置为window
,但jQuery希望将this
设置为您要移除的元素。 newMole.remove.bind(newMole)
为我们提供了newMole.remove
版本,this
明确设置为newMole
。