Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libGDX TiledMapRenderer未绘制_Java_Android_Libgdx - Fatal编程技术网

Java libGDX TiledMapRenderer未绘制

Java libGDX TiledMapRenderer未绘制,java,android,libgdx,Java,Android,Libgdx,我对TiledMapRenderer有问题。我用平铺贴图编辑器制作了一张tmx贴图,其中有4个平铺对象,每个平铺中有1个64x64平铺。但我不知道我错过了什么。屏幕上什么也没有。地图和平铺集位于“资源”文件夹中。我有很多谷歌,从教程和GDXTiledMap测试中复制粘贴的代码,但在我的Alcatel一键Pixi 4007dGLES 2.0就绪手机上除了fps计数器和摄像头位置外,什么都看不到。我错过了什么?答案可能对其他新手libGDX程序员有所帮助。 我已经在调试器中检查了映射,所有变量都已初

我对
TiledMapRenderer
有问题。我用
平铺贴图编辑器
制作了一张tmx贴图,其中有4个平铺对象,每个平铺中有1个64x64平铺。但我不知道我错过了什么。屏幕上什么也没有。地图和平铺集位于“资源”文件夹中。我有很多谷歌,从教程和
GDX
TiledMap
测试中复制粘贴的代码,但在我的
Alcatel一键Pixi 4007d
GLES 2.0
就绪手机上除了fps计数器和摄像头位置外,什么都看不到。我错过了什么?答案可能对其他新手
libGDX
程序员有所帮助。 我已经在调试器中检查了映射,所有变量都已初始化,映射中还有一个层

这是
游戏
类的代码

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;
}
}

您的代码看起来不错,所以我认为您在相机大小或相机位置方面有问题。你的TMX地图有多大?+尝试以以下方式创建摄影机:

    tiledMapCamera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

阿隆·齐伯曼,谢谢你的回答,不过在更新了摄像机代码后,屏幕上还是什么都没有,尽管这让我一直在挖掘。最后,我加载了一个
WindowsBMP
tileset,瞧,它成功了。因此,有了
PNG
地图或
平铺地图编辑器0.8
。为什么事情不是那么简单?我还检查了调试器中更深的
TmxMapLoader
字段,发现
pixmap
为空,但大小字段正常。如果图像源标记中的平铺集路径正常,请检查您的tmx文件(用记事本打开)。另外,尝试用一些瓷砖填充所有地图,也许你会看到一些东西,我们会理解这是相机缩放/位置问题。它应该很简单,你有一些小错误,应该找到。阿隆齐伯曼,非常感谢现在我这么接近解决方案。我看到了tmx地图的一些东西,我刚刚加载了png地图,其中只有瓷砖,没有瓷砖对象。当我找到一个时,我会发布解决方案。阿隆·齐尔伯曼,好的,最后主要是相机错误,为什么我没有看到地图上唯一的一块瓷砖。其次是
TmxMapLoader
不支持
tile对象
。没有这样的类型。这种类型的对象被解释为
RectangleMapObject
,我必须手动绘制它。