libGDX:使用touchDragged从Actor绘制和删除颜色

时间:2015-10-01 02:38:57

标签: java libgdx

我创建了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(它工作正常),如图enter image description here

所示

现在,如何从同一个调用Color.GREEN方法中的按钮中删除Color.WHITE ie(touchDragged),我的意思是撤消GREENWHITE isOver()仍为true ??

此图片清除了我的问题:enter image description here

像国王公司的Alphabetty Game一样,如果你知道的话:)。

抱歉,英语不好

2 个答案:

答案 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

中的答案