Używam grupy do przechowywania niektórych obrazów i narysowania ich w pakiecie SpriteBatch. Teraz chcę wykryć, które zdjęcie zostało kliknięte. Z tego powodu dodaję InputListener do grupy, aby uzyskać wydarzenie po dotknięciu. Wejściowy InputEvent otrzymał metodę (getTarget), która zwraca odwołanie do klikniętego Aktora.Wykrywanie wejścia dla grupy z nakładającymi się przezroczystymi obrazami
Po kliknięciu przezroczystego obszaru aktora, chcę zignorować nadchodzące wydarzenie. A jeśli za tym stoi aktor, chcę go użyć. Pomyślałem o czymś takim:
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
};
});
Czy to właściwy sposób? Pomyślałem, że zwrot fałszywej informacji o metodzie touchDown będzie kontynuował propagację wydarzenia i pozwoli mi również otrzymywać zdarzenia typu touchdown dla innych podmiotów w tej samej pozycji. Ale to wydaje się być nieporozumieniem ...
UPDATE
P.T.s odpowiedź rozwiązuje problem uzyskanie prawa wydarzenie. Teraz mam problem z wykryciem, czy piksel trafienia jest przezroczysty. Wydaje mi się, że potrzebuję Obrazu jako mapy Pixmap, aby uzyskać dostęp. Ale nie wiem, jak przekonwertować obraz do Pixmapy. Zastanawiam się również, czy jest to dobre rozwiązanie pod względem wydajności i wykorzystania pamięci.
Nie przechodzisz z obrazu do Pixmapy. Przechodzisz od Pixmap do Texture, aby przeciągnąć obraz. – NateS
Czy wypróbowałeś rozwiązanie, które dostarczyłem? – ManishSB