我创建了Button
actor的二维数组,然后我添加了new ClickListener() {
touchDragged }
作为以下代码:
buttons = new Button[3][3];
for (int row = 0; row < buttons.length; row++) {
for (int col = 0; col < buttons[0].length; col++) {
buttons[row][col] = new Button(drawable);
buttons[row][col].addListener(new ClickListener() {
@Override
public void touchDragged(InputEvent event, float x, float y, int pointer) {
for (int row = 0; row < buttons.length; row++) {
for (int col = 0; col < buttons[0].length; col++) {
if (buttons[row][col].isOver()) {
buttons[row][col].setColor(Color.GREEN);
}
}
}
}
}
}
touchDragged
方法中的代码,如果按钮isOver
按钮颜色为GREEN
(它工作正常),如图
现在,如何从同一个调用Color.GREEN
方法中的按钮中删除Color.WHITE
ie(touchDragged
),我的意思是撤消GREEN
到WHITE
isOver()
仍为true
??
抱歉,英语不好
答案 0 :(得分:1)
您可以使用if语句检查方块的颜色。如果是白色,则将其着色为绿色,反之亦然。
我有类似的东西,由于某种原因你不能直接比较if语句中的颜色,但是将它们改为rgb int值可以解决这个问题。您可以选择各种rgb选项,如rgba8888或argb8888等,选择一个适合您需求的选项。最简单的就是rgb888。它是颜色类中的静态方法,向它传递一个颜色,它将返回一个int。
if(Color.rgb888(button[row][col].getColor()) == Color.rgb888(Color.Green()))
{
button[row][col].setColor(Color.White());
}
答案 1 :(得分:1)
1-创建List
:
private List<Integer> list;
// In create OR show Method
list = new ArrayList<Integer>();
2-创建此行代码(作为buttons[row][col]
的ID):
buttons[row][col].setName("" + id++);
3-在循环后的touchDragged
..中写下此代码:
if (buttons[row][col].isOver()) {
try {
if (list.contains(Integer.parseInt(buttons[row][col].getName()))) {
if(Integer.parseInt(buttons[row][col].getName()) == list.get(list.size() - 2)) {
stage.getRoot().findActor("" + list.get(list.size() - 1)).setColor(Color.WHITE);
list.remove(list.size() - 1);
}
} else {
buttons[row][col].setColor(Color.GREEN);
list.add(Integer.parseInt(buttons[row][col].getName()));
}
} catch (Exception e) {
System.out.println(e.getClass());
}
}
4-请参阅此video
中的答案