54 lines
1.3 KiB
Text
54 lines
1.3 KiB
Text
|
|
import "luxe: ui/image" for UIImage
|
||
|
|
import "luxe: world" for UIEvent
|
||
|
|
import "luxe: ui/control" for Control
|
||
|
|
|
||
|
|
class ImageButton{
|
||
|
|
static create(ent){
|
||
|
|
var button = UIImage.create(ent)
|
||
|
|
var data = {
|
||
|
|
"hover": false,
|
||
|
|
"press": false,
|
||
|
|
"state_change": null
|
||
|
|
}
|
||
|
|
Control.set_state_data(button, data)
|
||
|
|
|
||
|
|
Control.set_events(button) {|event|
|
||
|
|
var change = true
|
||
|
|
var data
|
||
|
|
if(event.type == UIEvent.enter){
|
||
|
|
data = Control.get_state_data(button)
|
||
|
|
data["hover"] = true
|
||
|
|
} else if(event.type == UIEvent.exit) {
|
||
|
|
data = Control.get_state_data(button)
|
||
|
|
data["hover"] = false
|
||
|
|
} else if(event.type == UIEvent.press) {
|
||
|
|
data = Control.get_state_data(button)
|
||
|
|
data["press"] = true
|
||
|
|
} else if(event.type == UIEvent.release) {
|
||
|
|
data = Control.get_state_data(button)
|
||
|
|
data["press"] = false
|
||
|
|
} else {
|
||
|
|
change = false
|
||
|
|
}
|
||
|
|
if(change){
|
||
|
|
var func = data["state_change"]
|
||
|
|
if(func){
|
||
|
|
func.call(data, button)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return button
|
||
|
|
}
|
||
|
|
|
||
|
|
static set_state_change(control, fn){
|
||
|
|
var data = Control.get_state_data(control)
|
||
|
|
data["state_change"] = fn
|
||
|
|
}
|
||
|
|
|
||
|
|
static get_data(control){
|
||
|
|
//System.print(Control.get_state_data(control))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|