2017-03-03 148 views
0

因此,我正在使用批处理,并在start()end()之间,我试图绘制两个纹理。但是,其中只有一个正在绘制。我尝试删除正在绘制的图像,以查看其他图层是否会绘制,但该特定纹理仍不会绘制。纹理的设置方式完全相同,唯一的区别是没有绘制的纹理包含一些透明度。LibGDX纹理不会绘制

private static Texture bg1 = new Texture(Gdx.files.internal("bg1.png")); 
private static Texture bg2 = new Texture(Gdx.files.internal("bg2.png")); 
private static int bgx1 = 0, bgx2 = 0; 

public static void create() { 
    bg1.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); 
    bg2.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); 
} 

public static void render() { 
    bgx1 += 1; bgx2 += 1.7; 
    Core.batch.draw(bg1, 0, 0, bgx1, 0, Gdx.graphics.getWidth(), bg1.getHeight()); 
    Core.batch.draw(bg2, 0, 0, bgx2, 0, Gdx.graphics.getWidth(), bg2.getHeight()); 
} 
+0

欢迎使用stackoverflow。请检查以下页面,并更新您的问题:http://stackoverflow.com/help/how-to-ask – Xoppa

+0

嗯,我试图添加类的代码,但它格式化可怕 – GiraffeKey

+0

请[编辑您的问题](http: //stackoverflow.com/posts/42588367/edit)包含代码,而不是将代码放在评论中。 – SomethingDark

回答

0

从我所看到的,你所使用的具有INT类型的第四个参数的draw()方法。当绘制第二纹理,您的第四参数bgx2目前浮子代替INT(因为bgx2 = 1.7)。也许这可能是问题?如果您查看绘制第一个纹理,draw()的第四个参数是int,因为它应该是。对于bgx2尝试使用整数值而不是1.7。另外,在batch.begin()和batch.end()之间放置所有draw()方法。

有关更多信息,请参阅libGDX文档:https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Batch.html#draw-com.badlogic.gdx.graphics.Texture-float-float-int-int-int-int-

+0

我实际上已将该值更改为int。另外,每当我加载bg2.png时,即使我把它和bg1做成相同的图像,它仍然不起作用。这个不成立。 – GiraffeKey

+0

我试过让bg1的值加载bg2.png。仍然不起作用。 – GiraffeKey

+0

所以它必须是文件本身的问题。这是没有道理的,因为有一次我从字面上复制并粘贴了bg1.png,将它重命名为bg2.png,而且我仍然只能加载bg1.png。 – GiraffeKey