グループを使用していくつかの画像を保存し、それらを SpriteBatch に描画します。ここで、どの画像がクリックされたかを検出したいと考えています。このため、グループに InputListener を追加して、タッチダウン時にイベントを取得します。入力 InputEvent は、クリックされたアクタへの参照を返すメソッド ( 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に対して false を返すと、イベントの伝播が継続され、同じ位置にある他のアクタの touchDown イベントも受信できると考えました。しかし、これは誤解のようです...
アップデート
PT の回答は、適切なイベントを取得するという問題を解決します。ヒットピクセルが透明かどうかを検出する問題が発生しました。アクセスするには、PixmapとしてのImageが必要なようです。しかし、画像をピックスマップに変換する方法がわかりません。また、これがパフォーマンスとメモリ使用量の点で良い解決策であるかどうかも疑問です..