FitViewport不缩放actor [英] FitViewport does not scale actor
本文介绍了FitViewport不缩放actor的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有FitViewport
,其虚拟屏幕尺寸为1920x1080.
I have FitViewport
with virtual screen size 1920x1080.
viewport = new FitViewport(AssetLoader.VIRTUAL_WIDTH, AssetLoader.VIRTUAL_HEIGHT);
stage = new Stage(viewport);
此外,还有从Actor
类扩展的TimeBar
类. TimeBar
列表:
Also, there is TimeBar
class extended from Actor
class. TimeBar
listing:
public class TimeBar extends Actor {
private Color color;
private ShapeRenderer renderer;
private float time, current;
public TimeBar() {
color = Color.valueOf(AssetLoader.TIMEBAR_COLOR);
renderer = new ShapeRenderer();
renderer.setColor(color.r, color.g, color.b, color.a);
setBounds(10, 10, 1800, 10); //rectangle is wider than the screen! Why?
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
renderer.begin(ShapeRenderer.ShapeType.Line);
renderer.rect(getX(), getY(), getWidth(), getHeight());
renderer.end();
batch.begin();
}
}
我已经向render
方法中添加了一些日志:
I've added some logs to render
method:
Gdx.app.log("GameRenderer", "resizing: " + width + " " + height);
Gdx.app.log("GameRenderer", "world width: " + viewport.getWorldWidth());
Gdx.app.log("GameRenderer", "stage width: " + stage.getWidth());
Gdx.app.log("GameRenderer", "Time bar width: " + timeBar.getWidth());
他们说:
GameRenderer: world width: 1920.0
GameRenderer: stage width: 1920.0
GameRenderer: Time bar width: 1800.0
但是矩形比屏幕宽,为什么?
But rectangle is wider then the screen, why?
推荐答案
您正在使用预定义的视口创建舞台,因此舞台批处理的投影矩阵是由舞台视口定义的,但是当您创建ShapeRenderer时,投影矩阵是由Gdx.graphics.getHeight()
You're creating Stage with predefined Viewport, so projection matrix of stage's batch is defined by stage viewport but when you create ShapeRenderer then projection matrix is defined by Gdx.graphics.getWidth()
and by Gdx.graphics.getHeight()
用draw()
方法写这两行.
renderer.setProjectionMatrix(batch.getProjectionMatrix());
renderer.setTransformMatrix(batch.getTransformMatrix());
或者您可以使用此类
这篇关于FitViewport不缩放actor的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文