「射撃場」のようなゲームの場合、十字線(マウスに続く)を表示するonMouseOverイベントと、それを非表示にするonMouseOutイベントを含む画像があります。
ただし、十字線が表示されるとすぐに、下の画像が覆われ、十字線を非表示にするonMouseOutイベントがアクティブになります。
これにより、非常に醜い「ちらつき」効果が生まれます。
十字線の画像が下のターゲットを覆い隠すのを防ぐ方法はありますか?
「射撃場」のようなゲームの場合、十字線(マウスに続く)を表示するonMouseOverイベントと、それを非表示にするonMouseOutイベントを含む画像があります。
ただし、十字線が表示されるとすぐに、下の画像が覆われ、十字線を非表示にするonMouseOutイベントがアクティブになります。
これにより、非常に醜い「ちらつき」効果が生まれます。
十字線の画像が下のターゲットを覆い隠すのを防ぐ方法はありますか?
簡単な解決策の1つは、それを示す十字線のonMouseOverを作成することです(これは冗長であることはわかっていますが、メニューなどでは機能します)。
別の解決策は、十字線を非表示にするためにonMouseOutでタイムアウトを設定することです。ちらつきが減り、十字線がターゲットの外に短時間表示されます。
編集:
もう1つは、マウスと要素の間の衝突検出を実行し、mouseOverをターゲットの親要素のmouseMoveに変更することです。
コードはかなり長いですが、そのロジックは私が上で言ったことです。
注:getElementsByClassName
古いブラウザでは機能しませんが、ターゲットの配列を使用して、ターゲットを作成し、それらをarayに追加して(おそらくすでに1つ持っています)、この呼び出しの代わりに使用できます。
これは、十字線をスモスに配置するイージング機能を示しており、ターゲットの上にカーソルが隠れている場合は、カーソルが非表示になります。
背景に画像を使用し、十字線に画像を使用する代わりに、背景に背景画像を含むdivを使用し、十字線の画像をそのdivの子にした場合はどうなりますか?
これはテストしていませんが、十字画像が背景divのコンテンツの一部になるため、マウスアウトがトリガーされなくなると思います。
私はpointer-eventsプロパティがまさにあなたが探しているものだと信じています。基本的に、要素があらゆる種類のマウスイベントのターゲットになるのを防ぎ、その下の要素が代わりにそれらを処理できるようにします。親要素は引き続きイベントに反応できます。
ただし、Firefox、Safari、およびChromeの新しいバージョンでのみサポートされており、CSS4まではCSS仕様に含まれない可能性があります。サポートされているブラウザにとっては素晴らしいソリューションですが、IEまたはOperaのいずれかのバージョンで問題を修正したい場合は、別のソリューションも必要になります。私はそれがここで言及するに値するように感じました。:D