【发布时间】:2014-06-28 20:24:07
【问题描述】:
TiledMapRenderer 有问题。我用Tiled Map Editor 制作了一个 tmx 地图,其中包含 4 个平铺对象和 1 个 64x64 平铺。但我无法弄清楚我错过了什么。屏幕上什么都没有。地图和瓦片集位于资产文件夹中。我有很多谷歌,从教程和GDX TiledMap 测试中复制粘贴的代码,但在我的Alcatel One Touch Pixi 4007d GLES 2.0 准备好的手机上看不到任何东西,除了fps 计数器和相机位置。我错过了什么?答案可能对其他新手libGDX 程序员有帮助。
我已经在调试器中检查了地图,并且所有变量都已初始化,地图中还有一个图层。
这是Game类的代码
public class GameMain extends Game implements InputProcessor
{
private TiledMap map;
private TiledMapRenderer renderer;
private OrthographicCamera camera;
private BitmapFont font;
private SpriteBatch batch;
Vector2 mPrevTouch;
@Override
public void create () {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera();
camera.setToOrtho(false, (w / h) * 10, 10);
camera.update();
Gdx.input.setInputProcessor(this);
font = new BitmapFont();
batch = new SpriteBatch();
map = new TmxMapLoader().load("test.tmx");
renderer = new OrthogonalTiledMapRenderer(map);
}
@Override
public void render () {
Gdx.gl.glClearColor(0.55f, 0.55f, 0.55f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render();
batch.begin();
font.draw(batch, "FPS: " + Gdx.graphics.getFramesPerSecond(), 10, 20);
font.draw(batch, "Pos: " + camera.position.x + " " + camera.position.y, 20, 20);
batch.end();
}
@Override
public void dispose () {
map.dispose();
}
@Override
public boolean keyDown(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyTyped(char arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean keyUp(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean mouseMoved(int arg0, int arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean scrolled(int arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int arg2) {
if (mPrevTouch == null)
mPrevTouch = new Vector2(0, 0);
else
camera.translate(new Vector2(screenX - mPrevTouch.x, screenY - mPrevTouch.y));
mPrevTouch.x = screenX;
mPrevTouch.y = screenY;
return true;
}
@Override
public boolean touchUp(int arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
}
【问题讨论】: