グループを使用していくつかの画像を保存し、それらをSpriteBatchに描画します。今、どの画像がクリックされたのかを検出したい。このため、タッチダウン時にイベントを取得するためにInputListenerをグループに追加します。入力されたInputEventには、クリックされたActorへの参照を返すメソッド(getTarget)があります。重複する透明な画像を含むグループの入力検出
アクターの透過領域をクリックすると、着信イベントを無視します。そして、背後にアクターがある場合、私はこれを代わりに使用したいと思います。私は次のようなことを考えました:
myGroup.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Actor targetActor = event.getTarget();
// is the touched pixel transparent: return false
// else: use targetActor to handle the event and return true
};
});
これは正しい方法ですか?私はメソッドの偽を返すと思ったtouchDownはイベントの伝播を継続し、同じ位置の他のアクターのtouchDownイベントも受け取ることができます。しかし、これは誤解であるように思わ...
UPDATE
P.T.sの答えは、右のイベントを得ることの問題を解決します。今、ヒットしたピクセルが透明かどうかを検出する問題があります。私はアクセスするためにImageをPixmapとして必要としているようです。しかし、イメージをPixmapに変換する方法はわかりません。私はこれがパフォーマンスとメモリ使用量の点で良い解決策であるかどうかも疑問です。
ImageからPixmapに移動しません。 PixmapからTexture、Drawable、Imageに移動します。 – NateS
私が提供したソリューションを試しましたか? – ManishSB