Làm một cái gì đó như thế này:
if (renderX >= 0 && renderY >= 0
&& renderX <= container.getWidth() && renderY <= container.getWidth()) {
//Render
}
Nó sẽ phải được tùy chỉnh cho từng đối tượng vì mỗi đối tượng có kích thước khác nhau. Tôi kết xuất từng nhóm thành phần riêng biệt. Nếu bạn đang sử dụng TiLeD, đây là một đoạn mã hay mà tôi đã tạo:
TiledMap map = mapComp.getMap();
//Render positions as integers
int renderX = (int) renderPos.getX();
int renderY = (int) renderPos.getY();
//Render offset for map
int xRenderOffset = renderX % 32;
int yRenderOffset = renderY % 32;
//Get the first tile to be rendered
int firstTileX = (int) -renderX / 32;
int firstTileY = (int) -renderY / 32;
//Render tiles only if their indices are greater than 0
if (firstTileX < 0) {
xRenderOffset += Math.abs(firstTileX) * 32;
firstTileX = 0;
}
if (firstTileY < 0) {
yRenderOffset += Math.abs(firstTileY) * 32;
firstTileY = 0;
}
//Get the last tile to be rendered
int lastTileX = firstTileX + (client.getContainer().getWidth() / 32) + 1;
int lastTileY = firstTileY + (client.getContainer().getHeight() / 32) + 2;
//Verify that the last tile is valid
if (lastTileX > 127) {
lastTileX = 127;
}
if (lastTileY > 127) {
lastTileY = 127;
}
//Check if the map will be visible on the screen
if (lastTileX >= 0 && lastTileY >= 0) {
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 0, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 1, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 2, true);
map.render(xRenderOffset, yRenderOffset, firstTileX, firstTileY, lastTileX, lastTileY, 3, true);
}
32 là chiều rộng ô của bạn và 127 là kích thước bản đồ của bạn - 1.