1

因此,我在编写的脚本中的事件处理存在问题。整个事情在 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);

}
4

0 回答 0