0

好的,所以我有一个没有任何 ID 的按钮,但是当它被单击时,它会启动一个名为 buttonClick 的函数。此功能基本上控制老虎机(poke machine),它的图像、奖金等。注意,某些代码可能无法正常工作,但请忽略这一点并想象它工作。但是我怎样才能做到这一点,如果用户在这个功能完成之前点击播放按钮,它不会做任何事情,但仍然会完成它已经在做的功能?很抱歉,这里没有我的完整代码,而是一个示例,给您带来不便。

function buttonClick(){
var pic = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg");
var ex1 = pic[Math.floor(Math.random()*pic.length];
var ex2 = pic[Math.floor(Math.random()*pic.length];
var ex3 = pic[Math.floor(Math.random()*pic.length];
var moveImg = new Array("1.gif","2.gif","3.gif");    
var timer = new Array("1000","5000","500","2000");
var time =  Math.floor(Math.random()*4);
    if (document.getElementById('coins').value > 0){
            document.getElementById('coins').value -= 1;
            pic[0].src = moveImg[0];
            pic[1].src = moveImg[1];
            pic[2].src = moveImg[2];
            setTimeout(function(){ 
                pic[0].src = ex1;
                pic[1].src = ex2;
                pic[2].src = ex3;
           },timer[time])   
   }
        else{
            alert('Error insufficient tokens');
        }
}
4

1 回答 1

2
var in_progress = false;
function buttonClick(){
   if(!in_progress){
     var pic = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg");
     var ex1 = pic[Math.floor(Math.random()*pic.length];
     var ex2 = pic[Math.floor(Math.random()*pic.length];
     var ex3 = pic[Math.floor(Math.random()*pic.length];
     var moveImg = new Array("1.gif","2.gif","3.gif");    
     var timer = new Array("1000","5000","500","2000");
     var time =  Math.floor(Math.random()*4);
     if (document.getElementById('coins').value > 0){
        in_progress = true;
        document.getElementById('coins').value -= 1;
        pic[0].src = moveImg[0];
        pic[1].src = moveImg[1];
        pic[2].src = moveImg[2];
        setTimeout(function(){ 
            in_progress = false;
            pic[0].src = ex1;
            pic[1].src = ex2;
            pic[2].src = ex3;
       },timer[time])   
     } else {
        alert('Error insufficient tokens');
    }
  }
}

或者,您可以将函数包装在闭包中以创建in_progress私有变量。

var buttonClick = (function(){
  var in_progress = false;
  return function(){
   if(!in_progress){
     var pic = new Array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg");
     var ex1 = pic[Math.floor(Math.random()*pic.length];
     var ex2 = pic[Math.floor(Math.random()*pic.length];
     var ex3 = pic[Math.floor(Math.random()*pic.length];
     var moveImg = new Array("1.gif","2.gif","3.gif");    
     var timer = new Array("1000","5000","500","2000");
     var time =  Math.floor(Math.random()*4);
     if (document.getElementById('coins').value > 0){
        in_progress = true;
        document.getElementById('coins').value -= 1;
        pic[0].src = moveImg[0];
        pic[1].src = moveImg[1];
        pic[2].src = moveImg[2];
        setTimeout(function(){ 
            in_progress = false;
            pic[0].src = ex1;
            pic[1].src = ex2;
            pic[2].src = ex3;
       },timer[time])   
     } else {
        alert('Error insufficient tokens');
    }
  }
};
})();
于 2013-05-18T03:34:08.687 回答