そのため、作成しているスクリプトでのイベント処理に問題があります。全体がクロームで正常に動作しており、サファリでは非常にゆっくりと動作しますが、それでも動作します。Firefoxでは、イベントの1つがまったく機能していません。
基本的に、ページの読み込み時に、一連のイベントリスナーを作成しています。
canvasElem.addEventListener("mousedown",down,false);
canvasElem.addEventListener("mouseup",up,false);
canvasElem.addEventListener("mousemove",move,false);
これらのイベントリスナーは機能しますが、イベントリスナーの1つ(down関数を呼び出す)は、次の2行のコードのために途中で実行を停止します。
dXImgSpin=(centerXImgSpin-expansionOffsetXImgSpin)-(window.event.clientX);
dYImgSpin=(centerYImgSpin-expansionOffsetYImgSpin)-(window.event.clientY);
今私は理解しています(私はプログラミングに慣れていないので、まだ少し頭がおかしいです)これはFirefoxでは機能しません。W3CモデルではなくIE DOMモデルを使用しているためですが、私が問題を抱えていたプログラム、/ * 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);
}