Javascript 从画布上清除后,图像按钮仍在工作

Javascript 从画布上清除后,图像按钮仍在工作,javascript,html,image,button,Javascript,Html,Image,Button,我正在使用一个图像,并将其制作成一个按钮对象,当单击该对象时,该对象将消失并处于非活动状态,直到再次调用为止。我单击按钮,图像消失了,但图像覆盖的区域仍然处于活动状态,就像按钮仍然存在一样(即,如果我单击按钮所在的区域,则按钮调用的代码再次被调用) 下面是从draw()中绘制按钮的代码 这是Button类的绘图 下面是侦听和处理被单击按钮的代码 从HTML文件 从按钮类 Button.prototype.clicked=函数(inputEvent){ var clickX=inputEvent.

我正在使用一个图像,并将其制作成一个按钮对象,当单击该对象时,该对象将消失并处于非活动状态,直到再次调用为止。我单击按钮,图像消失了,但图像覆盖的区域仍然处于活动状态,就像按钮仍然存在一样(即,如果我单击按钮所在的区域,则按钮调用的代码再次被调用)

下面是从draw()中绘制按钮的代码

这是Button类的绘图

下面是侦听和处理被单击按钮的代码

从HTML文件

从按钮类

Button.prototype.clicked=函数(inputEvent){
var clickX=inputEvent.clientX;
var clickY=inputEvent.clientY;

return(clickX>=this.x&&clickX=this.y&&clickY如果HTML画布上没有像HTML DOM元素那样的对象,例如div、图像、按钮等,则鼠标按下事件可能是由画布的onClick触发的,这意味着if(btn.clicked(inputEvent))代码仍将运行,并检查单击是否在按钮的宽度和高度内

您可以向Button类添加一个属性来指定它是否已启用,如果未启用,只要在用户单击它时跳过检查即可

function mousePressed(inputEvent){        
    // If button enabled and clicked then udpate
    if(btn.enabled && btn.clicked(inputEvent)){
        start=Date.now();    
        score=0;    
        update();    
    }   
}
在button构造函数中,set enabled=true,然后在使按钮“消失”的代码中,将button.enabled设置为false。实际上,您可能已经有一个属性要控制其是否绘制,因此是否可以使用该属性来控制是否应检查单击

Button.prototype.draw=function(ctx){    
    ctx.beginPath();    
         ctx.drawImage(this.image, this.x, this.y, this.width, this.height);    
    ctx.closePath();     
};
function mousePressed(inputEvent){        
    if(btn.clicked(inputEvent)){    
        start=Date.now();    
        score=0;    
        update();    
    }   
}
  Button.prototype.clicked=function(inputEvent){    
      var clickX=inputEvent.clientX;
      var clickY=inputEvent.clientY;
      return (clickX>=this.x && clickX<=(this.x+this.width) && clickY>=this.y && clickY<=this.y+this.height);
   }; 
function mousePressed(inputEvent){        
    // If button enabled and clicked then udpate
    if(btn.enabled && btn.clicked(inputEvent)){
        start=Date.now();    
        score=0;    
        update();    
    }   
}