Tôi đang cố gắng tạo một trò chơi android.Tại sao không phải là view.invalidate ngay lập tức vẽ lại màn hình trong trò chơi android của tôi
Tôi có một lớp trò chơi mở rộng hoạt động và xử lý tất cả các thao tác nhập của người dùng. Sau đó, tôi có một lớp missionView mở rộng tầm nhìn và nó vẽ mức trên màn hình.
Khi người dùng nhấp vào cửa, tôi muốn thêm một số hoạt ảnh.
Điều gì xảy ra là: Trò chơi gọi door.open. Thay đổi trạng thái sao cho hàm view.onDraw sẽ vẽ cửa mở một nửa. Trò chơi gọi view.invalidate, sẽ vẽ lại màn hình. Sau đó, trò chơi sẽ ngủ trong nửa giây. Sau đó, nó gọi door.open một lần nữa. Lần thứ hai hàm được gọi là nó thay đổi trạng thái sao cho hàm view.onDraw vẽ cửa hoàn toàn mở. Sau đó, trò chơi gọi lại view.invalidate.
Vấn đề là nó không vẽ lại màn hình khi nó được xem.không hợp lệ. Nếu tôi đặt một điểm ngắt trên dòng và chạy trình gỡ lỗi và nhấp vào bước đó, nó sẽ không chuyển sang hàm view.onDraw của tôi. Nó thậm chí không thể cho tôi thấy mã nó đang thực thi.
Những gì tôi có là: lớp Door:
public boolean open()
{
if (doorState == DoorState.Closed)
{
doorState = DoorState.Opening;
return true;
}
else if (doorState == DoorState.Opening)
{
doorState = doorState.Open;
return true;
}
else
{
return false;
}
}
lớp Trò chơi:
if (tile instanceof DoorTile)
{
DoorTile doorTile = (DoorTile) tile;
Door door = doorTile.getDoor();
if (door.isClosed())
{
door.open();
selectedEntity.openDoor();
view.invalidate(); // This line does not work
try
{
Thread.sleep(500);
}
catch (InterruptedException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
door.open();
// Handled touch event so break switch statement
break;
}
}
Tôi đã đọc cuộc thảo luận này, nhưng tôi đã không hiểu những gì tôi đã làm để làm cho mã của tôi hoạt động. Tôi đã không hiểu cách sử dụng "Trình xử lý" và "Thông báo". –
Bạn có thể muốn xem thảo luận liên quan tại http://stackoverflow.com/questions/2801877/android-why-wont-invalidate-update-my-buttons-immediately –