Slick doesn’t have a native released method, he’ll need to create it. I believe there are some topics about it on these forums that helped me.
Here’s a UIButton class from my game engine, it may help you:
/**
*
* @author David
*/
public abstract class UIButton
extends BaseWidget {
protected ButtonState state = ButtonState.NORMAL;
protected String text;
protected UIButton() {
}
protected boolean isRolledOver() {
return manager.rolledoverWidget() == this;
}
protected void checkState() {
if (manager.rolledoverWidget() != this || manager.rolledoverManager() != manager) {
state = ButtonState.NORMAL;
}
}
protected boolean mouseInside = false;
public void widgetUpdate(long elapsedMillis) {
}
public boolean onPointerPressed(PointerEvent evt) {
if (inside(evt.getX(), evt.getY()) && evt.isLeftButton()) {
mouseInside = true;
state = ButtonState.PRESSED;
manager.focusWidget(UIButton.this);
return true;
}
manager.focusWidget(null);
return false;
}
public boolean onPointerReleased(PointerEvent evt) {
boolean wasMouseInside = mouseInside;
mouseInside = false;
if (inside(evt.getX(), evt.getY()) && wasMouseInside && evt.isLeftButton()) {
state = ButtonState.ROLLOVER;
manager.focusWidget(UIButton.this);
dispatchAction();
return true;
}
manager.focusWidget(null);
return false;
}
public boolean onPointerMoved(PointerEvent evt) {
if (inside(evt.getX(), evt.getY())) {
manager.rolloverWidget(UIButton.this);
state = ButtonState.ROLLOVER;
return true;
}
state = ButtonState.NORMAL;
return false;
}
public boolean onPointerDragged(PointerEvent evt) {
if (inside(evt.getX(), evt.getY()) && mouseInside) {
state = ButtonState.PRESSED;
return true;
}
state = ButtonState.NORMAL;
return false;
}
protected boolean inside(int x, int y) {
return MathTool.inRect(x, y, getX(), getY(), width, height);
}
protected void dispatchAction() {
if (listener != null) {
listener.handleAction(null);
}
}
@Override
public void onKeyReleased(KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
dispatchAction();
}
}
}
Uses a different event dispatch system to Slick but the idea behind it should always be the same.
Alright, thank you guys for your time. I will see what I can do later with your code examples. Right now I’m not really focused into this… and I have to go now do some other work.