2013-08-11 21 views
6

Trong libgdx game, tôi có 2 màn hình, menulist. Khi tôi nhấp vào một số label trong màn hình menu, tôi thực hiện setscreen(list). Màn hình mới hiển thị và màn hình menu cùng với các nhãn của nó biến mất.Libgdx: đặt một màn hình khác, nhưng các nút vẫn từ màn hình cũ đang hoạt động

Nhưng khi tôi nhấp vào các vị trí tương tự (từ màn hình trình đơn, nơi các nhãn đó, nhưng tất nhiên các nhãn đó không hiển thị như tôi đã thay đổi màn hình), sự kiện nhấp sẽ phản hồi. Tại sao?

lưu ý: Màn hình danh sách của tôi hiện không có trình xử lý sự kiện cho bất kỳ tiện ích nào.

Khi chuyển màn hình, tôi cần phải làm gì hơn là chỉ setscreen(anotherscreen) để tắt màn hình cũ?

Trả lời

13

tôi đã thay đổi này:

Tôi di chuyển các bộ vi xử lý đầu vào cho phương thức show() của màn hình sử dụng biến sân khấu của màn hình

public void show() { 
    ... 
    Gdx.input.setInputProcessor(stage); 

} 

trước khi tôi được thiết lập này chỉ có ở các nhà xây dựng của Màn hình, vì vậy ngay cả khi tôi đang thay đổi màn hình, bộ xử lý đầu vào vẫn được gắn vào màn hình của màn hình được tạo cuối cùng

+1

Điều này phù hợp với tôi. Bạn có thể giải thích một chút về cách thức hoạt động cùng nhau và tại sao? – user5493029

2

Câu trả lời ở trên làm việc với tôi vì tôi không làm việc với InputProcessor trong màn hình thứ hai.

Giải pháp của tôi là đặt Inputprocessor thành null sau setScreen.

Gdx.app.getApplicationListener().setScreen(new Screen()); Gdx.input.setInputProcessor(null);

0

Chỉ cần phá vỡ đầu của tôi về điều này. Tôi đã thay đổi màn hình theo phương pháp show nhưng đã gọi sau đó là Gdx.input.setInputProcessor(stage). Phương pháp vẫn hoàn thành sau khi phương thức show của màn hình mới chạy và do đó quay trở lại giai đoạn trước đó.

Vì vậy, hãy đảm bảo bạn gọi Gdx.input.setInputProcessor(stage) trước khi bạn thay đổi màn hình hoặc return sau khi bạn thay đổi màn hình.

Các vấn đề liên quan