Tôi sử dụng một Nhóm để lưu trữ một số Hình ảnh và vẽ chúng vào một SpriteBatch. Bây giờ tôi muốn phát hiện hình ảnh nào đã được nhấp. Vì lý do này, tôi thêm một InputListener vào nhóm để có được một sự kiện khi chạm xuống. InputEvent đến có một phương thức (getTarget) trả về một tham chiếu đến Actor được nhấn.Phát hiện đầu vào cho một Nhóm có hình ảnh trong suốt chồng lên nhau
Nếu tôi nhấp vào vùng trong suốt của diễn viên, tôi muốn bỏ qua sự kiện đến. Và nếu có một diễn viên đằng sau nó, tôi muốn sử dụng nó thay thế. Tôi đã nghĩ về một cái gì đó như thế này:
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
};
});
Đây có phải là cách phù hợp để làm điều đó không? Tôi nghĩ trả về false cho phương thức touchDown sẽ tiếp tục tuyên truyền cho sự kiện và cho phép tôi cũng nhận được các sự kiện touchDown cho các diễn viên khác ở cùng một vị trí. Nhưng điều này có vẻ là một sự hiểu lầm ...
CẬP NHẬT
P.T.s câu trả lời giải quyết vấn đề nhận được sự kiện đúng. Bây giờ tôi đã có vấn đề để phát hiện nếu các điểm ảnh hit là minh bạch. Dường như với tôi rằng tôi cần Hình ảnh làm Pixmap để có quyền truy cập. Nhưng tôi không biết làm thế nào để chuyển đổi một hình ảnh thành một Pixmap. Tôi cũng tự hỏi liệu đây có phải là giải pháp tốt về mặt hiệu suất và sử dụng bộ nhớ hay không ..
Bạn không chuyển từ Hình ảnh sang Pixmap. Bạn chuyển từ Pixmap sang Texture thành Drawable to Image. – NateS
Bạn đã thử giải pháp mà tôi đã cung cấp chưa? – ManishSB