我正在LibGDX
应用中构建一个小菜单。
我有一些按钮,我从相同的资源中绘制,并在它们上面放置不同的图像标签。
在我创建按钮之后,我正在寻找更新它们的方法。
我在循环中运行了10次,创建ImageButtom
并将其添加为Actor
for (int i=0; i<10; i++ ) {
ImageButtonStyle style = new ImageButtonStyle() ;
style.up = skin.getDrawable(i);
style.down = skin.getDrawable(i);
ImageButton image = new ImageButton(styleButton);
addActor(image);
}
因此我有10个按钮,上面有不同的图像标签。
当我有一个更新按钮图像的事件时(从禁用/启用/按下更改..)
我没有办法获取X图像并对其进行更改,因为我添加的图像没有任何TAG
或任何id
。
我可以再次绘制它,删除所有并再次在循环中绘制它,但我认为它不是实现它的最佳方式。
我正在寻找管理它的方法......
答案 0 :(得分:0)
如果我理解你想要什么,或者这是否是最有效的方式,但我碰巧读到了你的问题,那就不是了。
for (int i=0; i<10; i++ ) {
ImageButtonStyle style = new ImageButtonStyle() ;
style.up = skin.getDrawable(i);
style.down = skin.getDrawable(i);
ImageButton image = new ImageButton(styleButton);
image.setName("styleNumber"+i); // or use Integer.toString(i);
addActor(image);
}
private void testStageActorByName(String name) {
String tempName = name; //-> e.g: "styleNumber1"
for (int a = 0; a < yourStage.size; a++) {
if (yourStage.get(a).getName().equals(tempName)) {
//what you want to do, change something in that actor "styleNumber1"
yourStage.get(a)...
}
}
}
答案 1 :(得分:0)
将图像保存在数组或其他结构中:
import com.badlogic.gdx.utils.Array;
Array<ImageButton> myImageButtons = new Array<ImageButton>(10);
for (int i=0; i<10; i++ ) {
ImageButtonStyle style = new ImageButtonStyle() ;
style.up = skin.getDrawable(i);
style.down = skin.getDrawable(i);
ImageButton image = new ImageButton(styleButton);
addActor(image);
myImageButtons.add(image);
}
然后你可以稍后再查看:
void ImageButton getButtonImage(int i) {
return myImageButtons.get(i);
}