playable.js
Version:
A lightweight HTML5 game engine.
71 lines (60 loc) • 1.59 kB
text/typescript
import {Event} from './Event';
import {Layer} from '../display/Layer';
export class TouchEvent extends Event {
/** @event touchStart */
public static readonly TOUCH_START: string = 'touchStart';
/** @event touchMove */
public static readonly TOUCH_MOVE: string = 'touchMove';
/** @event touchEnd */
public static readonly TOUCH_END: string = 'touchEnd';
/** @event touchCancel */
public static readonly TOUCH_CANCEL: string = 'touchCancel';
/** @event touchTap */
public static readonly TOUCH_TAP: string = 'touchTap';
public target: Layer;
public currentTarget: Layer;
public targetX: number;
public targetY: number;
public localX: number;
public localY: number;
public stageX: number;
public stageY: number;
public identifier: number;
public cancelBubble: boolean;
protected constructor(type: string) {
super(type);
this.$init(type);
}
protected $init(type: string): this {
this.type = type;
this.targetX = 0;
this.targetY = 0;
this.localX = 0;
this.localY = 0;
this.stageX = 0;
this.stageY = 0;
this.identifier = 0;
this.target = null;
this.currentTarget = null;
this.cancelBubble = false;
return this;
}
public stopPropagation() {
this.cancelBubble = true;
}
public release(): void {
TouchEvent.recycle(this);
}
protected static readonly $pool: Array<TouchEvent> = [];
public static create(type: string): TouchEvent {
let pool = this.$pool;
if (pool.length > 0) {
return pool.pop().$init(type);
} else {
return new TouchEvent(type);
}
}
public static recycle(e: TouchEvent) {
this.$pool.push(e);
}
}