Java LIGBDX -我的应用程序冻结在中间粘贴瓷砖区域
我正在将“摄影机”视口中的瓷砖区域复制到剪贴板。从那里我将剪贴板粘贴回地图的某个区域。像这样:Java LIGBDX -我的应用程序冻结在中间粘贴瓷砖区域,java,android,eclipse,libgdx,tiled,Java,Android,Eclipse,Libgdx,Tiled,我正在将“摄影机”视口中的瓷砖区域复制到剪贴板。从那里我将剪贴板粘贴回地图的某个区域。像这样: public void render(float delta) { if(camera.frustum.pointInFrustum(0, 0, 0)) { camera.position.x = layer.getWidth() * layer.getTileWidth() / 2; camera.position.y = Gdx.g
public void render(float delta) {
if(camera.frustum.pointInFrustum(0, 0, 0)) {
camera.position.x = layer.getWidth() * layer.getTileWidth() / 2;
camera.position.y = Gdx.graphics.getHeight();
camera.frustum.boundsInFrustum(0, 1280, 0, Gdx.graphics.getWidth() / 2 - scrollSpeed, Gdx.graphics.getHeight() / 2 - scrollSpeed, 0);
clipboard = TileMapCopier.copyRegion(layer, 0, 0, (int) camera.viewportWidth, (int) camera.viewportHeight);
TileMapCopier.pasteRegion(layer, clipboard, 0, layer.getHeight() / 2);
}
public TiledMapTile[][] copyRegion(TiledMapTileLayer layer, int x, int y, int width, int height) {
TiledMapTile[][] region = new TiledMapTile[width][height];
for (int ix = x; ix < x + width; ix++)
for (int iy = y; iy < y + height; iy++) {
Cell cell = layer.getCell(ix, iy);
if(cell == null)
continue;
region[ix - x][iy - y] = cell.getTile();
}
return region;
}
public void pasteRegion(TiledMapTileLayer layer, TiledMapTile[][] region, int x, int y) {
for (int ix = x; ix < x + region.length; ix++)
for (int iy = y; iy < y + region[ix].length; iy++) {
Cell cell = layer.getCell(ix, iy);
if(cell == null) {
Gdx.app.debug(TileMapCopier.class.getSimpleName(), "pasteRegion: skipped [" + ix + ";" + iy + "]");
continue;
}
cell.setTile(region[ix - x][iy - y]);
}
}
这只是在我将“复制”方法中的“宽度”和“高度”更改为“复制”视口的“宽度”和“高度”(这是它所需要的)时才开始执行的。但当设置层的宽度和高度时,它并没有这样做
请帮忙?原因可能是什么?我怎么知道呢?听起来好像你在某处有一个无限循环。这些信息只是垃圾收集器告诉你它正在工作。嗯,无限循环?我应该找什么?我不太确定我在哪里会那样做
05-20 23:55:31.669: D/dalvikvm(1655): GC_CONCURRENT freed 460K, 6% free 11776K/12487K, paused 12ms+23ms, total 60ms