Libgdx 之List 列表类
类的继承图
先上类图是因为实在没啥好讲的
ListStyle
要想使用List那么必须先定义ListStyle,ListStyle定义了List的各种属性。
通过上面可以指定ListStyle定义了List的字体,item被选中时字体颜色,未选中时字体颜色,选中时背景图片, 背景图。
而且通过代码可以看出Optional上面的属性为必须声明的属性,必须初始化。而且可以知道fontColorSelected 和 fontColorUnselected已经被初始化了,也可以另外赋值 font和selection必须被初始化,否则报空指针异常。
测试代码
在测试的时候list.getWidth()=0, list.getPreWidth()=实际大小。在测试过程中发现如果不设置list.setSize(list.getPrefWidth(), list.getPrefHeight()); 那么Listener事件不会响应,而且selection图片也不会显示
而且在resize方法中要调用viewport.update(width, height);否则在调整屏幕时点击item会发生偏移
Stage stage;
List<String> list;
String[] listName = {"Libgdx", "CSDN", "daXiao","Leitu","Renhua"};
StretchViewport viewport;
@Override
public void create() {
viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
viewport.getCamera().translate(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() /2, 0);
viewport.getCamera().update();
List.ListStyle style = new List.ListStyle();
style.font = new BitmapFont();
style.selection = new TextureRegionDrawable(new TextureRegion(new Texture("badlogic.jpg")));
list = new List<String>(style);
list.setItems(listName);
// 如果不设大小,那么selection就不会显示,也不会响应click事件
list.setSize(list.getPrefWidth(), list.getPrefHeight());
list.setPosition(200, 200);
list.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
System.out.println("selected index=" + list.getSelectedIndex());
System.out.println("setected=" + list.getSelected());
super.clicked(event, x, y);
}
});
Gdx.app.log("List", "width="+list.getWidth() + "prefer width="+list.getPrefWidth());
stage = new Stage(viewport);
Gdx.input.setInputProcessor(stage);
stage.addActor(list);
}
@Override
public void render() {
Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
@Override
public void resize(int width, int height) {
viewport.update(width, height);
}
@Override
public void dispose() {
stage.dispose();
}
作者:zqiang_55
来源:CSDN
原文:https://blog.csdn.net/zqiang_55/article/details/51325975
版权声明:本文为博主原创文章,转载请附上博文链接!