昨晚把BaseScreen就敲好了, 也找到了屏幕放缩的最优和最简方式. 不多说, 看代码:
public BaseScreen(final SnakeGo game) {
super(new ScalingViewport(Scaling.fit, CommonConsts.Screen.WIDTH, CommonConsts.Screen.HEIGHT, new OrthographicCamera()), new SpriteBatch());
this.game = game;
Gdx.input.setInputProcessor(this);
}
BaseScreen直接继承与Stage是个好方法, 很方便使用Stage所提供的各种渲染/输入相关的函数, 但这样如果考虑MVC风格的话, M和C似乎就不该在Screen存在, 但却又没地方放置...当然这样可能有些死脑筋了. (我在Snake对象中分离了M和C).
在构造函数中, 使用Scaling的fit方式来初始Stage, 可以保证屏幕'居中放缩', 并在resize()时, 更新尺寸即可.
@Override
public void resize(int width, int height) {
this.getViewport().update(width, height, true);
}
这方法有些简单的让人不敢相信...
<---- LIBGDX小众的分割线 ---->
这两天留意些Game相关的招聘信息, 发现Libgdx真是小众啊, 一个都没有, 难道真的像朋友说的 -- "也就你自己玩玩吧...". LIBGDX相对比较'潜', 用起来虽说有些'复杂', 但对于研究个'架构'什么的, 真的很不错的....唉, 难道我也转向cocos2d-x去?