Making objects interactive (with the mouse) is done creating a h2d.Interactive
instance. You provide it an interaction area and attach it to a sprite. This can be used to implement buttons for the UI but also for any other object that responds on being clicked or hovered (for instance an old wooden chest opened by mouse or an enemy the player hits by clicking on it).
var interaction = new h2d.Interactive(300, 100, mySprite);
interaction.onOver = function(event : hxd.Event) {
mySprite.alpha = 0.7;
}
interaction.onOut = function(event : hxd.Event) {
mySprite.alpha = 1;
}
interaction.onPush = function(event : hxd.Event) {
trace("down!");
}
interaction.onRelease = function(event : hxd.Event) {
trace("up!");
}
interaction.onClick = function(event : hxd.Event) {
trace("click!");
}
You can listen to global events (keyboard, touch, mouse, window) by adding event listener to the hxd.Window
instance.
function onEvent(event : hxd.Event) {
trace(event.toString());
}
hxd.Window.getInstance().addEventTarget(onEvent);
Don't forget to remove the event using removeEventTarget when disposing your objects.
Keyboard events can be observed using the global event, check if the event.kind
is EKeyDown
or EKeyUp
.
function onEvent(event : hxd.Event) {
switch(event.kind) {
case EKeyDown: trace('DOWN keyCode: ${event.keyCode}, charCode: ${event.charCode}');
case EKeyUp: trace('UP keyCode: ${event.keyCode}, charCode: ${event.charCode}');
case _:
}
}
hxd.Window.getInstance().addEventTarget(onEvent);
You can also use the static functions hxd.Key.isPressed
, hxd.Key.isDown
and hxd.Key.isReleased
.
if (Key.isPressed(Key.SPACE)) {
trace("shoot!");
}
You can listen to resize events by adding addResizeEvent
listener to the hxd.Window
instance.
function onResize() {
var stage = hxd.Window.getInstance();
trace('Resized to ${stage.width}px * ${stage.height}px');
}
hxd.Window.getInstance().addResizeEvent(onResize);
Don't forget to remove the event using removeEventTarget when disposing your objects.
All events callbacks in Heaps receive a hxd.Event
instance, which contains info about the event.
hxd.System.getValue(IsTouch) can be used to detect whether a device has a touch screen or not (currently only detected on mobile devices). This value could be used for example to implement a long press with a timer on touch screen platforms only.