【发布时间】:2017-03-05 14:09:37
【问题描述】:
我在我的游戏中使用Scene2D 功能。我有FitViewport,虚拟屏幕尺寸为 1920x1080。
viewport = new FitViewport(AssetLoader.VIRTUAL_WIDTH, AssetLoader.VIRTUAL_HEIGHT);
stage = new Stage(viewport);
此外,还有从 Actor 类扩展而来的 MyActor 类。 MyActor构造函数:
public MyActor(String text, float x, float y) {
this.text = text;
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(AssetLoader.robotoFontFile);
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 96;
font = generator.generateFont(parameter);
generator.dispose();
layout = new GlyphLayout();
layout.setText(font, text);
super.setBounds(x, y, layout.width, layout.height);
this.debug();
renderer = new ShapeRenderer();
this.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
Gdx.app.log("MyActor", text + " is touched!");
return true;
}
});
}
而MyActor 覆盖draw() 方法:
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
renderer.begin(ShapeRenderer.ShapeType.Line);
this.drawDebugBounds(renderer);
renderer.end();
batch.begin();
font.draw(batch, text, getX(), getY());
}
运行时我得到这个:
InputListener 仅在我触摸绿色矩形内部时才处理输入,尽管预期会触摸文本。
那么,问题出在哪里? BitmapFont draw 方法是占据左上角的位置还是坐标有问题?
【问题讨论】: