UNPKG

avg-core-ts

Version:

Develop Adventure Game (or ADV, Visual Novel, Galgame, etc.) on your own!

91 lines (80 loc) 2.63 kB
/** * @file General event handle module * @author MicroMatrix <yangpan.1985@bytedance.com> * @copyright 2012-2020 bytedance * @link git@code.byted.org:yangpan.1985/avg.git */ export function attachToSprite(sprite) { sprite.interactive = true; sprite.on('click', handleEvent); sprite.on('tap', handleEvent); sprite.on('mousemove', handleEvent); sprite.on('mouseover', handleEvent); sprite.on('mouseout', handleEvent); sprite.on('mousedown', handleEvent); sprite.on('mouseup', handleEvent); sprite.on('mouseupoutside', handleEvent); sprite.on('touchstart', handleEvent); sprite.on('touchmove', handleEvent); sprite.on('touchend', handleEvent); sprite.on('touchendoutside', handleEvent); sprite.on('pointerover', pointerHandler); sprite.on('pointerenter', pointerHandler); sprite.on('pointerdown', pointerHandler); sprite.on('pointermove', pointerHandler); sprite.on('pointerup', pointerHandler); sprite.on('pointerupoutside', pointerHandler); sprite.on('pointercancel', pointerHandler); sprite.on('pointerout', pointerHandler); sprite.on('pointerleave', pointerHandler); sprite.on('pointertap', pointerHandler); } class EventData { constructor(evt) { this.type = evt.type; this._preventDefault = false; this.originalEvent = evt; // this.index = evt.target.index; this.target = evt.target; this.currentTarget = evt.currentTarget; this.global = { x: evt.data.global.x, y: evt.data.global.y, }; this.local = evt.currentTarget ? evt.currentTarget.toLocal(this.global) : null; // 有时候会有奇怪的触发,导致 data.originalEvent 是 null…… if (evt.data.originalEvent) { this.movement = { x: evt.data.originalEvent.movementX, y: evt.data.originalEvent.movementY, }; } else { this.movement = { x: 0, y: 0 }; } } preventDefault() { this._preventDefault = true; } stopPropagation() { this.originalEvent.stopped = true; } } // let Handler; // export function registerHandler(handler) { // if (typeof handler === 'function') // Handler = handler; // else { // Err.warn('[EventManager] Event Handler must be a function, ignored.'); // } // } function handleEvent(evt) { const e = new EventData(evt); const handler = e.currentTarget ? e.currentTarget[`_on${e.type}`] : null; handler && handler(e); } function pointerHandler(evt) { const e = new EventData(evt); // console.log(e.type) const defaultHandler = e.currentTarget ? e.currentTarget[`_on${e.type}`] : null; defaultHandler && defaultHandler(e); }