Javascript 单击时如何使更新停止运行?

Javascript 单击时如何使更新停止运行?,javascript,canvas,Javascript,Canvas,这是一段代码,我试图让更新停止运行,这样我就可以在画布上画一个点。当我尝试获取putPoint以返回clicked=true时,无论单击与否,它都会使clicked等于true。我只想在单击时返回true var canvas=document.getElementById(“myCanvas”); var ctx=canvas.getContext(“2d”); //canvas.width=window.innerWidth; //canvas.height=window.innerHei

这是一段代码,我试图让更新停止运行,这样我就可以在画布上画一个点。当我尝试获取
putPoint
以返回
clicked=true
时,无论单击与否,它都会使clicked等于true。我只想在单击时返回true

var canvas=document.getElementById(“myCanvas”);
var ctx=canvas.getContext(“2d”);
//canvas.width=window.innerWidth;
//canvas.height=window.innerHeight;
var半径=2;
var dragging=false;//是否按住鼠标键
ctx.lineWidth=半径*2;
var canvasPos=getPosition(canvas);
var-mouseX=0;
var-mouseY=0;
var=false;
//这里是我全局声明clicked=true的地方
函数更新(){
clearRect(0,0,canvas.width,canvas.height);
ctx.beginPath();
ctx.arc(mouseX,mouseY,radius,0,2*Math.PI,真);
ctx.fill();
requestAnimationFrame(更新);
}
canvas.addEventListener(“mousemove”,setMousePosition,false);
函数设置鼠标位置(e){
mouseX=e.clientX;
穆西=e.clientY;
}
//console.log(“更新前”+单击);
如果(单击!=真){
更新();
//console.log(“内部更新”+单击);
}
//这是我单击时要停止的代码
//console.log(“更新后”+单击);
函数putPoint(){
//e、 clientX和e.clientY获取鼠标位置
ctx.beginPath();
//e、 clientX和e.clientY获取鼠标位置
ctx.arc(mouseX-10,mouseY-10,半径,0,Math.PI*2);
//ctx.弧(e.offsetX,e.offsetY,半径,0,数学π*2);
ctx.fill();
//console.log(“内部putPoint”+单击);
}
//putPoint在画布上鼠标位置放置一个点。但它不会开火,除非
//我停止更新,它跟踪我的点。
//console.log(“在putPoint之后”+单击);
canvas.addEventListener(“鼠标向下”,putPoint);
//log(putPoint());
//console.log(单击);
功能位置(el){
var xPosition=0;
var-yPosition=0;
while(el){
xPosition+=(el.offsetLeft-el.scrollLeft+el.clientLeft);
yPosition+=(el.offsetTop-el.scrollTop+el.clientTop);
el=el.offsetParent;
}
返回{
x:xPosition,
y:yPosition
};
}

我根据您第一段代码中已使用和未使用(例如拖动变量)部分的线索推断出一点,但在我看来,您似乎在试图绘制一个鼠标跟踪的点,然后一旦发生单击事件,您希望开始在鼠标后拖动点,直到释放该单击

首先,您的“点击”跟踪问题 我认为你在执行不同的声明时是误解了。在第二个代码段中,“test”事件处理程序函数之外的所有语句只执行一次。每次鼠标单击都会调用“test”函数,但只返回true,不会更改“clicked”的值。因此,声明:

var clicked = false;
clicked = test();
……声明:

var clicked = false;
clicked = test();
…每个只执行一次。下面是一个快速示例,向您展示如何跟踪该值的切换。尝试一次简单的点击,并在发布之前保持点击一秒钟以获得想法

var=false;
var clickableArea=document.getElementById(“clickable”);
clickableArea.addEventListener('mousedown',function(){
单击=真;
log('Clicked,Clicked变量的值:'+Clicked);
});
clickableArea.addEventListener('mouseup',function(){
单击=假;
log('Released,clicked var的值:'+clicked);
});

单击我
我说clicked=true,我的意思是我将其设置为false全局请单击
代码段编辑器,感谢编辑我的文章。我甚至不知道你能做到这一点。这绝对有效。谢谢,这里付出了很多努力,我学到了很多。