Hi, I can halp with issue 1.: when adding button callback: button.onInputUp.add(this.upEvent, this); you can check passed arguments in your handler: protected upEvent(button: Phaser.Button, pointer: Phaser.Pointer, isOver: boolean): void { //console.log("Button up"); if (isOver) { // ... do something ... } }  one of the passed arguments is isOver, which says, whether pointer is still over button or not