andengineを使用してゲーム内の複数のスプライトで適切なタッチイベントを取得する
質問
Androidのandengineを使用してゲームを作成しています。このゲームでは、さまざまなスプライト(卵)が画面上であちらこちらに移動します。各スプライトのタッチイベントを個別に取得したいのですが、あるスプライトが別のスプライトの上にあるときに、onAreaTouched()でタッチを与えることがあります両方のスプライトのイベント、ここで false または super.onAreaTouched() を返した場合、ここで true を返した場合、別のスプライトに登録されている領域上を移動するスプライトはタッチ イベントを与えることができませんでした。
では、上に表示されているスプライトのみのタッチイベントを取得するにはどうすればよいでしょうか。
解決
使用できるもう 1 つのアプローチは、 IOnSceneTouchListener
, 、 とともに onSceneTouchEvent
方法。X と Y は次から取得できます。 pTouchEvent
パラメータを確認し、スプライトにそのパラメータが含まれているかどうかを確認します。
ここで、知らなかった場合に備えて、各エンティティには子のリストがあります (そして、あなたのシーンはエンティティです)。エンティティがそれ自体を描画するとき、子の描画メソッドも呼び出します。子の描画メソッドは、最初の子メソッドから最後まで (リスト内の順序に従って) 呼び出されます。したがって、リストの最初の子が最初に描画されます。最後のものは最後に描かれます。 それで 最後のエンティティは、その上に描画される他のエンティティを常にオーバーライドします。
したがって、シーンの子リストを最後の子から最初の子まで繰り返します。スプライトにタッチポイントが含まれている場合は、そのスプライトにイベントを処理させ、 trueを返す イベントを消費したことを言います。