Пропуск анимации с помощью нескольких сенсорных входов
Я пишу HTML-игру, предназначенную для планшетов, использующих greensock в качестве движка анимации и jQuery для привязки событий. Текущую сборку можно увидеть по адресу http://gregbatha.com/battleblocks/. Он работает, имея каждый блок как div, который получает событие касания и перемещается с помощью greensock.
В целом это работает хорошо, так как это два игрока, поэтому в любой момент времени два человека быстро постукивают по блокам. Когда два человека касаются друг друга за миллисекунды, анимация задерживается или пропускается. Кто-нибудь знает почему это?
Мой код обработки событий можно увидеть ниже
$('.block').bind( touchEnd, function(){
$this = $(this);
var thisX = $this.data('x');
var thisY = $this.data('y');
console.log(thisX+", "+thisY);
var player = grid[thisY][thisX].player;
//if this player currently hasn't selected any blocks, select this one
if(players[player].selectedBlock == null && !$this.hasClass('group')){
//set this block as the currently selected block
selectBlock(thisX, thisY);
}else{
//otherwise react accordingly
//if the player selected a selectable block, switch the currently selected block with this new one
if($this.hasClass('group')){
explodeGroup(thisX, thisY);
}else if($this.hasClass('selectable')){
$('.player'+player).removeClass('selected selectable');
switchBlocks(players[player].selectedBlock.x, players[player].selectedBlock.y, thisX, thisY, function(){
checkGroups();
});
players[player].selectedBlock = null;
}else if($this.hasClass('selected')){
//if player selects currently selected block, unselect it
$('.player'+player).removeClass('selected selectable');
players[player].selectedBlock = null;
}else{
//if the player did not select a selectable block for switching, make this new block the selected one
$('.player'+player).removeClass('selected selectable');
selectBlock(thisX, thisY);
}
}
} );