Libgdx 之List 列表类
Posted zqiang_55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Libgdx 之List 列表类相关的知识,希望对你有一定的参考价值。
上一节介绍完Actor 演员类,现在要介绍Widget了。Widget也是一个演员,参与layout,而且提供了minimum, preferred, and maximum size,但是没有具体的实现,因此再介绍Widget的子类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();
以上是关于Libgdx 之List 列表类的主要内容,如果未能解决你的问题,请参考以下文章