你可以使用你的纹理“SetWrap”,并创建基于纹理TextureRegion。 重要提示:我花了一段时间才弄明白,但要镜像,您的纹理必须是两种尺寸的力量。它在Android上工作,但不在iOS上,您不会收到消息 - 显示为黑色。因此,它必须是4x4或8x8,16×16 256×256 ... 512×512或.. 创建一个3x3的镜像图像(或AXB大小)
Texture imgTexture = new Texture(Gdx.files.internal("badlogic.jpg"));
imgTexture.setWrap(Texture.TextureWrap.MirroredRepeat, Texture.TextureWrap.MirroredRepeat);
TextureRegion imgTextureRegion = new TextureRegion(imgTexture);
imgTextureRegion.setRegion(0,0,imgTexture.getWidth()*3,imgTexture.getHeight()*3);
会给你这样的:
下面你可以看到,使用一个阶段和图像演员(Scene2D)产生的图象的代码示例
public class GameScreen implements Screen {
MyGdxGame game;
private Stage stage;
public GameScreen(MyGdxGame aGame){
stage = new Stage(new ScreenViewport());
game = aGame;
Texture imgTexture = new Texture(Gdx.files.internal("badlogic.jpg"));
imgTexture.setWrap(Texture.TextureWrap.MirroredRepeat, Texture.TextureWrap.MirroredRepeat);
TextureRegion imgTextureRegion = new TextureRegion(imgTexture);
imgTextureRegion.setRegion(0,0,imgTexture.getWidth()*3,imgTexture.getHeight()*3);
TextureRegionDrawable imgTextureRegionDrawable = new TextureRegionDrawable(imgTextureRegion);
Image img = new Image();
img.setDrawable(imgTextureRegionDrawable);
img.setSize(imgTexture.getWidth()*3,imgTexture.getHeight()*3);
stage.addActor(img);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
stage.dispose();
}
}
我发现,要求在此之前,但是我有麻烦的事情与作为并列于“TextureRegion”“纹理”的工作。现在我已经通过稍微修改LibGDX本身的类来解决这个问题,这当然不是很理想,但它确实有效。 – Shamrock
@Shammock你可以在这里发布你如何完成它?你改变了什么? – Mars