因此,我在编写的脚本中的事件处理存在问题。整个事情在 chrome 中运行良好,在 safari 中即使运行非常缓慢,它仍然可以运行。在 Firefox 中,其中一个事件根本不起作用。
基本上,在页面加载时,我正在创建一堆事件监听器:
canvasElem.addEventListener("mousedown",down,false);
canvasElem.addEventListener("mouseup",up,false);
canvasElem.addEventListener("mousemove",move,false);
这些事件侦听器可以工作,我敢肯定,但是由于这两行代码,其中一个事件侦听器(调用 down 函数)在中途停止运行:
dXImgSpin=(centerXImgSpin-expansionOffsetXImgSpin)-(window.event.clientX);
dYImgSpin=(centerYImgSpin-expansionOffsetYImgSpin)-(window.event.clientY);
现在我明白了(有点明白,我是编程新手,所以它仍然有点过头了)这在 Firefox 中不起作用,因为我使用的是 IE DOM 模型而不是 W3C 模型,但在另一部分我遇到问题的程序,/* event.pageX 在 firefox 中不起作用,但在 Chrome 中起作用*/ 我通过添加更改事件处理方式来修复它(也就是添加 canvasEleem.addEventListener),然后添加代码行
event = event || window.event;
并将 window.event.clientX 更改为 event.clientX。但是,当我尝试在这个不同的函数中执行此操作时,上面的代码行甚至不会运行。
任何事情都有帮助,如果这个问题的措辞不好,我很抱歉,但是我目前对 javascript 的理解几乎碰壁了,无法理解如何克服它。如果需要更多信息,请随时告诉我!
艾萨克
按下时的完整代码流:
canvasElem.addEventListener("mousedown",down,false);
function down(){
mouseDown=1;
getNewAngle();
angleMomentumImgSpin=.005;
}
getNewAngle() 函数是问题所在:
function getNewAngle(){
dX2ImgSpin=dX1ImgSpin;
dY2ImgSpin=dY1ImgSpin;
dX1ImgSpin=dXImgSpin;
dY1ImgSpin=dYImgSpin;
//THESE ARE THE PART THAT ARE CAUSING THE PROBLEM
dXImgSpin=(centerXImgSpin-expansionOffsetXImgSpin)-(window.event.clientX);
dYImgSpin=(centerYImgSpin-expansionOffsetYImgSpin)-(window.event.clientY);
//This if statement is to avoid the drawing from flipping when the mouse crosses the halfwaypoint
if (dXImgSpin>0){
angleImgSpin=(Math.atan((dYImgSpin/dXImgSpin))-angleStartImgSpin);
}else{angleImgSpin=(Math.atan((dYImgSpin/dXImgSpin))-angleStartImgSpin+(Math.PI))}
//alert(angle);
}