A ButtonComponent enables a group of entities to behave like a button, with different visual states for hover and press interactions.
entity: Entity
The Entity that this Component is attached to.
Component.entity
system: ComponentSystem
The ComponentSystem used to create this Component.
Component.system
get active(): boolean
Gets the button's active state.
boolean
set active(arg: boolean): void
Sets the button's active state. If set to false, the button will be visible but will not respond to hover or touch interactions. Defaults to true.
boolean
void
get enabled(): boolean
Gets the enabled state of the component.
boolean
set enabled(arg: boolean): void
Sets the enabled state of the component.
boolean
void
Component.enabled
get fadeDuration(): number
Gets the duration to be used when fading between tints, in milliseconds.
number
set fadeDuration(arg: number): void
Sets the duration to be used when fading between tints, in milliseconds. Defaults to 0.
number
void
get hitPadding(): Vec4
Gets the padding to be used in hit-test calculations.
set hitPadding(arg: Vec4): void
Sets the padding to be used in hit-test calculations. Can be used to expand the bounding box
so that the button is easier to tap. Defaults to [0, 0, 0, 0].
void
get hoverSpriteAsset(): Asset
Gets the sprite to be used as the button image when the user hovers over it.
set hoverSpriteAsset(arg: Asset): void
Sets the sprite to be used as the button image when the user hovers over it.
void
get hoverSpriteFrame(): number
Gets the frame to be used from the hover sprite.
number
set hoverSpriteFrame(arg: number): void
Sets the frame to be used from the hover sprite.
number
void
get hoverTint(): Color
Gets the tint color to be used on the button image when the user hovers over it.
set hoverTint(arg: Color): void
Sets the tint color to be used on the button image when the user hovers over it. Defaults to
[0.75, 0.75, 0.75].
void
get imageEntity(): null | Entity
Gets the entity to be used as the button background.
null | Entity
set imageEntity(arg: null | Entity): void
Sets the entity to be used as the button background. The entity must have an ElementComponent configured as an image element.
null | Entity
void
get inactiveSpriteAsset(): Asset
Gets the sprite to be used as the button image when the button is not interactive.
set inactiveSpriteAsset(arg: Asset): void
Sets the sprite to be used as the button image when the button is not interactive.
void
get inactiveSpriteFrame(): number
Gets the frame to be used from the inactive sprite.
number
set inactiveSpriteFrame(arg: number): void
Sets the frame to be used from the inactive sprite.
number
void
get inactiveTint(): Color
Gets the tint color to be used on the button image when the button is not interactive.
set inactiveTint(arg: Color): void
Sets the tint color to be used on the button image when the button is not interactive.
Defaults to [0.25, 0.25, 0.25].
void
get pressedSpriteAsset(): Asset
Gets the sprite to be used as the button image when the user presses it.
set pressedSpriteAsset(arg: Asset): void
Sets the sprite to be used as the button image when the user presses it.
void
get pressedSpriteFrame(): number
Gets the frame to be used from the pressed sprite.
number
set pressedSpriteFrame(arg: number): void
Sets the frame to be used from the pressed sprite.
number
void
get pressedTint(): Color
Gets the tint color to be used on the button image when the user presses it.
set pressedTint(arg: Color): void
Sets the tint color to be used on the button image when the user presses it. Defaults to
[0.5, 0.5, 0.5].
void
get transitionMode(): number
Gets the button transition mode.
number
set transitionMode(arg: number): void
Sets the button transition mode. This controls how the button responds when the user hovers over it/presses it. Can be:
Defaults to BUTTON_TRANSITION_MODE_TINT.
number
void
fire(
name: string,
arg1?: any,
arg2?: any,
arg3?: any,
arg4?: any,
arg5?: any,
arg6?: any,
arg7?: any,
arg8?: any): EventHandler
Fire an event, all additional arguments are passed on to the event listener.
string
Name of event to fire.
any
First argument that is passed to the event handler.
any
Second argument that is passed to the event handler.
any
Third argument that is passed to the event handler.
any
Fourth argument that is passed to the event handler.
any
Fifth argument that is passed to the event handler.
any
Sixth argument that is passed to the event handler.
any
Seventh argument that is passed to the event handler.
any
Eighth argument that is passed to the event handler.
Self for chaining.
obj.fire('test', 'This is the message')
Component.fire
hasEvent(name: string): boolean
Test if there are any handlers bound to an event name.
string
The name of the event to test.
boolean
True if the object has handlers bound to the specified event name.
obj.on('test', () => {}) // bind an event to 'test'
obj.hasEvent('test') // returns true
obj.hasEvent('hello') // returns false
Component.hasEvent
off(
name?: string,
callback?: HandleEventCallback,
scope?: any): EventHandler
Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.
string
Name of the event to unbind.
HandleEventCallback
Function to be unbound.
any
Scope that was used as the this when the event is fired.
Self for chaining.
const handler = () => {}
obj.on('test', handler)
obj.off() // Removes all events
obj.off('test') // Removes all events called 'test'
obj.off('test', handler) // Removes all handler functions, called 'test'
obj.off('test', handler, this) // Removes all handler functions, called 'test' with scope this
Component.off
on(
name: string,
callback: HandleEventCallback,
scope?: any): EventHandle
Attach an event handler to an event.
string
Name of the event to bind the callback to.
HandleEventCallback
Function that is called when event is fired. Note the callback is limited to 8 arguments.
any = ...
Object to use as 'this' when the event is fired, defaults to current this.
Can be used for removing event in the future.
obj.on('test', (a, b) => {
console.log(a + b)
})
obj.fire('test', 1, 2) // prints 3 to the console
const evt = obj.on('test', (a, b) => {
console.log(a + b)
})
// some time later
evt.off()
Component.on
once(
name: string,
callback: HandleEventCallback,
scope?: any): EventHandle
Attach an event handler to an event. This handler will be removed after being fired once.
string
Name of the event to bind the callback to.
HandleEventCallback
Function that is called when event is fired. Note the callback is limited to 8 arguments.
any = ...
Object to use as 'this' when the event is fired, defaults to current this.
obj.once('test', (a, b) => {
console.log(a + b)
})
obj.fire('test', 1, 2) // prints 3 to the console
obj.fire('test', 1, 2) // not going to get handled
Component.once
static EVENT_CLICK: string = 'click';
Fired when the mouse is pressed and released on the component or when a touch starts and ends on the component. The handler is passed a ElementMouseEvent or ElementTouchEvent.
entity.button.on('click', (event) => {
console.log(`Clicked entity ${'${entity.name}'}`)
})
static EVENT_HOVEREND: string = 'hoverend';
Fired when the button changes state to be not hovered.
entity.button.on('hoverend', () => {
console.log(`Entity ${'${entity.name}'} unhovered`)
})
static EVENT_HOVERSTART: string = 'hoverstart';
Fired when the button changes state to be hovered.
entity.button.on('hoverstart', () => {
console.log(`Entity ${'${entity.name}'} hovered`)
})
static EVENT_MOUSEDOWN: string = 'mousedown';
Fired when the mouse is pressed while the cursor is on the component. The handler is passed a ElementMouseEvent.
entity.button.on('mousedown', (event) => {
console.log(`Mouse down on entity ${'${entity.name}'}`)
})
static EVENT_MOUSEENTER: string = 'mouseenter';
Fired when the mouse cursor enters the component. The handler is passed a ElementMouseEvent.
entity.button.on('mouseenter', (event) => {
console.log(`Mouse entered entity ${'${entity.name}'}`)
})
static EVENT_MOUSELEAVE: string = 'mouseleave';
Fired when the mouse cursor leaves the component. The handler is passed a ElementMouseEvent.
entity.button.on('mouseleave', (event) => {
console.log(`Mouse left entity ${'${entity.name}'}`)
})
static EVENT_MOUSEUP: string = 'mouseup';
Fired when the mouse is released while the cursor is on the component. The handler is passed a ElementMouseEvent.
entity.button.on('mouseup', (event) => {
console.log(`Mouse up on entity ${'${entity.name}'}`)
})
static EVENT_PRESSEDEND: string = 'pressedend';
Fired when the button changes state to be not pressed.
entity.button.on('pressedend', () => {
console.log(`Entity ${'${entity.name}'} unpressed`)
})
static EVENT_PRESSEDSTART: string = 'pressedstart';
Fired when the button changes state to be pressed.
entity.button.on('pressedstart', () => {
console.log(`Entity ${'${entity.name}'} pressed`)
})
static EVENT_SELECTEND: string = 'selectend';
Fired when a xr select ends on the component. The handler is passed a ElementSelectEvent.
entity.button.on('selectend', (event) => {
console.log(`Select ended on entity ${'${entity.name}'}`)
})
static EVENT_SELECTENTER: string = 'selectenter';
Fired when a xr select now hovering over the component. The handler is passed a ElementSelectEvent.
entity.button.on('selectenter', (event) => {
console.log(`Select entered entity ${'${entity.name}'}`)
})
static EVENT_SELECTLEAVE: string = 'selectleave';
Fired when a xr select not hovering over the component. The handler is passed a ElementSelectEvent.
entity.button.on('selectleave', (event) => {
console.log(`Select left entity ${'${entity.name}'}`)
})
static EVENT_SELECTSTART: string = 'selectstart';
Fired when a xr select starts on the component. The handler is passed a ElementSelectEvent.
entity.button.on('selectstart', (event) => {
console.log(`Select started on entity ${'${entity.name}'}`)
})
static EVENT_TOUCHCANCEL: string = 'touchcancel';
Fired when a touch is canceled on the component. The handler is passed a ElementTouchEvent.
entity.button.on('touchcancel', (event) => {
console.log(`Touch canceled on entity ${'${entity.name}'}`)
})
static EVENT_TOUCHEND: string = 'touchend';
Fired when a touch ends on the component. The handler is passed a ElementTouchEvent.
entity.button.on('touchend', (event) => {
console.log(`Touch ended on entity ${'${entity.name}'}`)
})
static EVENT_TOUCHLEAVE: string = 'touchleave';
Fired when a touch leaves the component. The handler is passed a ElementTouchEvent.
entity.button.on('touchleave', (event) => {
console.log(`Touch left entity ${'${entity.name}'}`)
})
static EVENT_TOUCHSTART: string = 'touchstart';
Fired when a touch starts on the component. The handler is passed a ElementTouchEvent.
entity.button.on('touchstart', (event) => {
console.log(`Touch started on entity ${'${entity.name}'}`)
})