2

「射撃場」のようなゲームの場合、十字線(マウスに続く)を表示するonMouseOverイベントと、それを非表示にするonMouseOutイベントを含む画像があります。

ただし、十字線が表示されるとすぐに、下の画像が覆われ、十字線を非表示にするonMouseOutイベントがアクティブになります。

これにより、非常に醜い「ちらつき」効果が生まれます。

十字線の画像が下のターゲットを覆い隠すのを防ぐ方法はありますか?

4

3 に答える 3

1

簡単な解決策の1つは、それを示す十字線のonMouseOverを作成することです(これは冗長であることはわかっていますが、メニューなどでは機能します)。

別の解決策は、十字線を非表示にするためにonMouseOutでタイムアウトを設定することです。ちらつきが減り、十字線がターゲットの外に短時間表示されます。

編集:
もう1つは、マウスと要素の間の衝突検出を実行し、mouseOverをターゲットの親要素のmouseMoveに変更することです。

http://jsfiddle.net/sHecT/1/

コードはかなり長いですが、そのロジックは私が上で言ったことです。

注:getElementsByClassName古いブラウザでは機能しませんが、ターゲットの配列を使用して、ターゲットを作成し、それらをarayに追加して(おそらくすでに1つ持っています)、この呼び出しの代わりに使用できます。

これは、十字線をスモスに配置するイージング機能を示しており、ターゲットの上にカーソルが隠れている場合は、カーソルが非表示になります。

http://jsfiddle.net/sHecT/2/

于 2012-07-14T16:13:53.317 に答える
1

背景に画像を使用し、十字線に画像を使用する代わりに、背景に背景画像を含むdivを使用し、十字線の画像をそのdivの子にした場合はどうなりますか?

これはテストしていませんが、十字画像が背景divのコンテンツの一部になるため、マウスアウトがトリガーされなくなると思います。

于 2012-07-14T16:22:24.280 に答える
1

私はpointer-eventsプロパティがまさにあなたが探しているものだと信じています。基本的に、要素があらゆる種類のマウスイベントのターゲットになるのを防ぎ、その下の要素が代わりにそれらを処理できるようにします。親要素は引き続きイベントに反応できます。

ただし、Firefox、Safari、およびChromeの新しいバージョンでのみサポートされており、CSS4まではCSS仕様に含まれない可能性がありますサポートされているブラウザにとっては素晴らしいソリューションですが、IEまたはOperaのいずれかのバージョンで問題を修正したい場合は、別のソリューションも必要になります。私はそれがここで言及するに値するように感じました。:D

于 2012-07-14T16:28:21.637 に答える