ちょうどキャンバスに入って、単純なゲームを作って遊んでいます。HTMLキャンバスのjavascriptはfirefoxでは動作しますがchromeでは動作しません
しかし、クロームでは機能しませんが、Firefoxでは機能します。ゲームは非常に単純なRTSであるはずです。ボックスを選択し、右クリックするとボックスをあるポイントから別のポイントに移動できます。
これはfirefoxで動作します。ただし、クロムではボックスを描画しますが、クリックは登録されません(ボックスを選択/移動できません)。クロームでも、火かき棒のコンソールに何も表示されません。私はxamppからスクリプトを実行していますが、それが適切な場合に備えています。
EDIT:ha、申し訳ありません。私は正直なところ、どこから探し始めたらいいのかわからなかったので、全部を投稿しました。私は上記のコードをダウンし、それよりもはるかに短いバージョンに置き換えました。上記のコードは、マウスの機能を処理するコードの下に絞り込ん一層
/*Game mouse controls*/
_screen.mousemove(function(e){
var playerUnitHover = _game.onUnit(playerUnits, e),
enemyUnitHover = _game.onUnit(enemyUnits, e);
if(typeof(playerUnitHover)=='number') _screen.css('cursor','pointer');
if(typeof(enemyUnitHover)=='number') _screen.css('cursor','not-allowed');
});
:また
EDIT2をフォーマット編集。これはおそらく問題が発生する場所です。ファイヤーバグのクロムでは、コンソールに表示する変数を取得できますが、カーソルがボックスの上にあるときは登録に失敗します。これを処理する関数は以下のとおりです。
/*If mouse coordinates are ontop of unit, then return index of that unit from supplied array argument*/
this.onUnit = function(array,e){
var numOfUnits = array.length,
mouseOffsetX = e.pageX - offsetX,
mouseOffsetY = e.pageY - offsetY;
for(var i = 0; i < numOfUnits; i++){
var unit = array[i],
xRange = mouseOffsetX > unit.x && (unit.x+unit.width) > mouseOffsetX,
yRange = mouseOffsetY > unit.y && (unit.y+unit.height) > mouseOffsetY;
if (xRange && yRange){
return i;
}
if(!xRange || !yRange) _screen.css('cursor','crosshair');
}
}
私の目が出血し始めた – ajax333221
コードが多すぎるため、問題のある領域に編集してください。 –
小さなサンプルを表示できますか?あなたはクロムのマウスクリックのための正しい座標を得ますか? – Jonas