【发布时间】:2016-01-14 01:32:25
【问题描述】:
我将 LibGDX 与 Scene2D 一起用于我的 java 游戏。我知道我的问题与 Scene2D 相关,因为我使用了 EXACT 相同的类,通常将其传递给 SpriteBatch(而不是通过 Stage 实例)并且它按预期工作。
我让 Stage 管理所有作为演员的可绘制实体。它使用 Batch 的实现者绘制所有内容; SpriteBatch 是默认设置。它一直在工作,直到我想绘制一个多边形,它必须由 PolygonSpriteBatch 绘制,而不是 SpriteBatch。所以在一个 Stage.draw() 调用期间,我需要同时使用它们。
我创建了一个 CheckedPolygon 类,它基本上是两个 PolygonSprite 相互叠加(一个是半透明的)。暂时结束draw()方法传入的SpriteBatch,暂时开启PolygonSpriteBatch,绘制多边形,关闭。
输出是空屏,我什么也得不到。同样,当我不使用 Stage 类时它也有效。
这是课程,因此您可以更好地理解。 注意:我知道这在性能方面很糟糕,因为我不处理 Texture 并为一个对象保留 Batch,但这是为了简单起见。 NOTE2:是的,我把它正确地传递给了stage,代码被执行了,我通过调试检查了。
public class CheckedPolygon extends Actor {
private final PolygonSprite mBackground, mCross;
private final PolygonSpriteBatch mPolygonSpriteBatch;
private final Camera mCamera;
public CheckedPolygon(Camera camera, float[] vertices, short[] triangles) {
super();
mCamera = camera;
mPolygonSpriteBatch = new PolygonSpriteBatch();
Texture textureBack = new Texture(Gdx.files.internal("source/back.png"));
textureBack.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
PolygonRegion regionBack = new PolygonRegion(new TextureRegion(textureBack), vertices, triangles);
mBackground = new PolygonSprite(regionBack);
Texture textureCross = new Texture(Gdx.files.internal("source/cross.png"));
textureCross.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
PolygonRegion regionCross = new PolygonRegion(new TextureRegion(textureCross), vertices, triangles);
mCross = new PolygonSprite(regionCross);
}
@Override
public void draw(Batch batch, float parentAlpha) {
batch.end();
mPolygonSpriteBatch.setProjectionMatrix(mCamera.combined);
mPolygonSpriteBatch.begin();
mBackground.draw(mPolygonSpriteBatch);
mCross.draw(mPolygonSpriteBatch);
mPolygonSpriteBatch.end();
batch.begin();
}
}
我是这样使用它的:
CheckedPolygon polygon = new CheckedPolygon(mStage.getCamera(), mTextureAtlas, new float[]{0, 500, 0, 0, 0, 500}, new short[]{0, 1, 2});
mStage.addActor(polygon);
我检查了 PolygonSprite.getVertices() 和 PolygonSprite.getBoundingRectangle() 方法的值,得到了一些奇怪的输出...
【问题讨论】:
标签: java android libgdx polygon scene2d