ゲームを作っています。このゲームの衝突は、キャンバス上のピクセルの色に基づいています。色のピクセルを取得し、たとえば赤の場合、プレイヤーは移動できません。残念ながら、Firefox の画像はリモートでぼやけています。ピクセルは白から赤に滑らかに変化します。しかし、私はそれを望んでいません。
この問題に答える方法はありますか?
2035 次
1 に答える
6
これはアンチエイリアシングと呼ばれ、サイズ変更 (または形状やテキストなどのサブピクセル化) 時に画像を補間した結果です。これは、ブラウザが内部的に行うものです。
ただし、最新バージョンのブラウザーではこれをオフにすることができます。
これがブラウザで機能するかどうか、およびモード間の違いを確認するために行ったテストを次に示します (下の図のように)。下のバージョンは滑らかにしないでください。
このスニペットを CSS スタイル シートに追加します (ブラウザによって機能する場合と機能しない場合があります)。
canvas {
image-rendering: optimizeSpeed; // Older versions of FF
image-rendering: -moz-crisp-edges; // FF 6.0+
image-rendering: -webkit-optimize-contrast; // Webkit (non standard naming)
image-rendering: -o-crisp-edges; // OS X & Windows Opera (12.02+)
image-rendering: crisp-edges; // Possible future browsers.
-ms-interpolation-mode: nearest-neighbor; // IE (non standard naming)
}
更新:標準
の現在の形式(ステータス「実装の準備ができていません」) は指定されており、可能な将来の標準crisp-edges
ではありません。optimize-contrast
上記の CSS クラスはこれで更新され、接頭辞なしの値に反映されます。
- 更新終了 -
Webkit ブラウザーの場合、次のように canvas 要素の画像スムージングを無効にすることができます。
context.webkitImageSmoothingEnabled = false;
Mozilla の場合:
context.mozImageSmoothingEnabled = false;
(この後者が利用可能な場合、いずれにせよ避けるべき要素自体をスケーリングしない限り、CSS クラスは必要ありません)。
于 2013-07-12T15:06:16.427 に答える