所以我在我写的脚本中遇到了事件处理问题。整个事情在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 not working in firefox, but does in Chrome * /我通过添加更改事件的处理方式(也就是添加canvasEleem.addEventListener)来修复它,然后添加一行代码< / p>
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);
}