Added sprites to the bricks and touch control

This commit is contained in:
2021-11-17 20:12:25 +01:00
parent bc3ef31728
commit 44e93e5c6d
9 changed files with 83 additions and 30 deletions

View File

@ -5,6 +5,11 @@ class Keyboard {
window.addEventListener('keydown', e => this.onKeydown(e));
window.addEventListener('keyup', e => this.onKeyup(e));
window.addEventListener('touchstart', e => this.onTouchStart(e));
window.addEventListener('touchmove', e => this.onTouchMove(e));
window.addEventListener('touchend', e => this.onTouchEnd(e));
}
setKeydown(fn) {
@ -21,4 +26,47 @@ class Keyboard {
onKeyup(event) {
delete this._pressed[event.code];
}
onTouchStart(e) {
var touchobj = e.changedTouches[0] // reference first touch point (ie: first finger)
this.touchX = parseInt(touchobj.clientX) // get x position of touch point relative to left edge of browser
this.touchY = parseInt(touchobj.clientY) // get x position of touch point relative to left edge of browser
window.dispatchEvent(new KeyboardEvent('keydown',{'code':'Space'}));
window.dispatchEvent(new KeyboardEvent('keydown',{'code':'KeyN'}));
e.preventDefault()
}
onTouchMove(e) {
var touchobj = e.changedTouches[0] // reference first touch point for this event
var dist = parseInt(touchobj.clientX) - this.touchX
if (dist>0) {
delete this._pressed['ArrowLeft'];
this._pressed['ArrowRight'] = true;
} else if (dist<0) {
delete this._pressed['ArrowRight'];
this._pressed['ArrowLeft'] = true;
} else {
delete this._pressed['ArrowLeft'];
delete this._pressed['ArrowRight'];
}
dist = parseInt(touchobj.clientY) - this.touchY
if (dist>0) {
delete this._pressed['ArrowUp'];
this._pressed['ArrowDown'] = true;
} else if (dist<0) {
delete this._pressed['ArrowDown'];
this._pressed['ArrowUp'] = true;
} else {
delete this._pressed['ArrowUp'];
delete this._pressed['ArrowDown'];
}
e.preventDefault()
}
onTouchEnd(e) {
this._pressed = {};
}
}