java脚本敲打痣,动态去除痣

时间:2017-12-06 02:13:36

标签: javascript

我不知道如何以随机的时间间隔移除痣,有什么想法吗?指令是......剩下的几个任务之一是随机出现的痣,随机消失!每个随机添加的痣也应在单独随机时间后消失。

   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));

1 个答案:

答案 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