2017-07-28 53 views
0

所以我创建了一个按钮:做一个可触摸的ImageButton仅在第一次

tile = new ImageButton(up,null,checked); 
    tile.setPosition(x, 800); 
    tile.setSize(118,200); 
    tile.addListener(new InputListener(){ 
    @Override 
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     return true; 
    } 
    }); 

现在它从上质地每次按钮被点击时变为检查到的图像。但我想要的是,纹理更改为检查,只有第一次触摸按钮,并成为“无法触及”之后。有没有办法做到这一点? EventListeners没有这些功能。

回答

1

ImageButton有一个方法setTouchable(Touchable touchable)继承自Actor。 “确定触摸事件如何分发给这位演员,默认为Touchable.enabled。”

Touchable HASE 3枚举常量:

  • childrenOnly:没有触摸输入事件将由演员接收,但 孩子仍然会接收事件。

  • disabled:演员或任何
    孩子都不会收到触摸输入事件。

  • enabled:所有触摸输入事件将由演员和任何 儿童接收。

在第一次触摸呼叫setTouchable(Touchable.disabled)在那个特定的ImageButton

+0

,谢谢,我已经把上触setTouchable(Touchable.disabled)和它完美的作品! – Alessandro

0

在课堂级别使用布尔型字段,例如

class SomeClass{ 
    private boolean isTileTouched = false; 
} 

和使用,在您的ClickListener

tile.addListener(new InputListener(){ 
    @Override 
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     if(isTileTouched) return false; 
     isTileTouched = true; 
     return true; 
    } 
    }); 

如果您有更多然后一个按钮,你可以考虑使用一个Map<String,Boolean>为tileId和值。

相关问题