fixed disabled touch events...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-04-14 14:15:40 +03:00
parent eb8d2f459f
commit 72053b0dd4
3 changed files with 18 additions and 6 deletions

View File

@ -2,6 +2,6 @@ CACHE MANIFEST
# Last Modified: 2017 Apr 14
CACHE:
simplesnake.html
simplesnake.css
simplesnake.js
simplesnake.html

View File

@ -4,6 +4,7 @@
<title>Simple Snake</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="simplesnake.css">
<script src="simplesnake.js"></script>

View File

@ -327,7 +327,10 @@ var Snake = {
/*********************************************************************/
var HANDLER_SET = false
var __HANDLER_SET = false
var __DEBOUNCE_TIMEOUT = 100
var __DEBOUNCE = false
var KEY_CONFIG = {
' ': ['pause'],
ArrowLeft: ['left'],
@ -336,7 +339,6 @@ var KEY_CONFIG = {
Left: ['left'],
Right: ['right'],
}
function makeKeyboardHandler(snake){
return function(event){
clearHints()
@ -344,8 +346,16 @@ function makeKeyboardHandler(snake){
action
&& action[0] in snake
&& snake[action[0]].apply(snake, action.slice(1)) }}
function makeTapHandler(snake){
return function(event){
// prevent clicks and touches from triggering the same action
// twice -- only handle the first one within timeout...
// NOTE: this should not affect events of the same type...
if(__DEBOUNCE && event.type != __DEBOUNCE){ return }
__DEBOUNCE = event.type
setTimeout(function(){ __DEBOUNCE = false }, __DEBOUNCE_TIMEOUT)
clearHints()
// top of screen (1/8)...
;(event.clientY || event.changedTouches[0].pageY) <= (document.body.clientHeight / 8) ?
@ -357,6 +367,7 @@ function makeTapHandler(snake){
: (event.clientX || event.changedTouches[0].pageX) <= (document.body.clientWidth / 2) ?
Snake.left()
: Snake.right() }}
function clearHints(){
document.body.classList.contains('hints')
&& document.body.classList.remove('hints') }
@ -370,11 +381,11 @@ function setup(snake, timer, size){
snake = snake || Snake
// setup event handlers (only once)...
if(!HANDLER_SET){
if(!__HANDLER_SET){
document.addEventListener('keydown', makeKeyboardHandler(snake))
//document.addEventListener('touchstart', makeTapHandler(snake))
document.addEventListener('touchstart', makeTapHandler(snake))
document.addEventListener('mousedown', makeTapHandler(snake))
HANDLER_SET = true
__HANDLER_SET = true
/*/ cache updater...
// XXX needs more work...