使用带有libgdx的scene2d.ui:皮肤来自哪里?

我读过有关libgdx的 scene2d features,包括UI元素,但我无法让它们工作.他们似乎都使用皮肤对象,我该如何创建一个

我已经完成了nice tutorial,创建了一个简单的libgdx游戏,在雨桶中捕捉雨滴,我通过使用texture atlas加载图像创建了一个简单的棋盘游戏应用程序.但是,scene2d听起来像是一个更好的方法来控制移动的棋子棋盘游戏应用程序,以及任何按钮和菜单.

解决方法

要加载外观,可以从libgdx测试项目中使用的示例外观文件开始.

> Atlaspack File
> Json File
> Atlaspack Image
> Font File

this question中有更多细节,我发现我必须将文件移动到资产的子目录中以避免HTML版本中的错误. (如果我将文件保留在assets文件夹中,我会看到一条错误消息,例如“GwtApplication:exception:读取文件数据/ uiskin.json时出错.”)

我发布了一个显示单个按钮的complete example,有趣的代码全部在game class中.示例非常简单,您只需要两个成员变量来保存场景和按钮.

private Stage stage;
private TextButton button;

要创建外观,只需加载数据文件即可.

Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));

将按钮连接到舞台上.

stage = new Stage();
button = new TextButton("Click Me!",skin);
stage.addActor(button);

将监听器连接到按钮,并注册阶段以接收事件.

button.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event,float x,float y) {
        button.setText("Clicked!");
    }
});
Gdx.input.setInputProcessor(stage);

render()方法基本上是对stage.draw()的调用.

Gdx.gl.glClearColor(1,1,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

stage.act(Math.min(Gdx.graphics.getDeltaTime(),1 / 30f));
stage.draw();

然后你只需要在调整大小时布局屏幕.

button.setPosition(
        (width-button.getWidth())/2,(height-button.getHeight())/2);

如果您的屏幕更复杂,请考虑使用Table.

如果要使用其他字体,可以使用Hiero生成字体文件和图像文件.完成后,您必须使用新的字体图像并使用TexturePacker将其与其他skin assets重新打包.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...