2014-11-12 5 views
0

Так что мне нужно что-то вроде следующего, это в основном тачпад с 2-мя дисками, которые пользователь прикасается пальцем к пальцу, чтобы перенести персонажа определенным образом. Это отлично работает на моем ПК, но, похоже, это не работает, когда я тестирую его на iOS. Причина в том, вероятно, потому, что нет мыши, поэтому mousedown и mouseup не работает. Есть ли альтернативы? Я пытался использовать keydown и keyup, но они тоже не работали.Mouseup и mousedown не работают на ios

Вот мой код:

var $div = $('#character'); 

$('#ios-left').mousedown(function(){ 
    leftTimer = setInterval(function(){ 
    processWalk('left'); 
    },100); 
}).mouseup(function(){ 
    $('#character').stop(); 
    clearInterval(leftTimer); 
}); 
$('#ios-right').mousedown(function(){ 
     rightTimer = setInterval(function(){ 
    processWalk('right'); 
      },100); 
}).mouseup(function(){ 
    $('#character').stop(); 
    clearInterval(rightTimer); 
}); 

Спасибо! (Имейте в виду, что мне нужно пользователю держать DIV вниз пальцем, чтобы двигаться характер, и когда он выпускает свой палец, персонаж должен остановиться)

EDIT: Ссылка на мой вопрос: JQuery Mouseup on iOS

ответ

0

Используйте очень легкий вес jquery.mouse2touch.min.js плагин для имитации событий мыши для событий касания.

Применить поведение обработчика событий мыши, чтобы коснуться событий, например, ниже $("#elmentID").mouse2touch() ИЛИ $(".elment-css-class").mouse2touch(), который выполнит работу, чтобы скопировать все функциональные возможности на основе мыши.

В своем коде вы можете позвонить mouse2touch(), как показано ниже:

$('#ios-left').mousedown(function(){ 
    leftTimer = setInterval(function(){ 
    processWalk('left'); 
    },100); 
}).mouseup(function(){ 
    $('#character').stop(); 
    clearInterval(leftTimer); 
}).mouse2touch(); 

$('#ios-right').mousedown(function(){ 
     rightTimer = setInterval(function(){ 
    processWalk('right'); 
      },100); 
}).mouseup(function(){ 
    $('#character').stop(); 
    clearInterval(rightTimer); 
}).mouse2touch(); 

EDIT: Для других связанных Question и здесь я обеспечиваю тот же ответ.

Working Fiddle

Проблема с таймером, вы должны очистить-интервал времени, прежде чем двигаться. Ваша глобальная переменная TimerWalk с clearInterval(TimerWalk); должна быть полезна.

Вот код блока

$('#ios-left').mousedown(function() { 
    clearInterval(TimerWalk); 
    TimerWalk = setInterval(function() { 
     processWalk('left'); 
    }, 100); 
}).mouseup(function() { 
    $div.stop(); 
    clearInterval(TimerWalk); 
}).mouse2touch(); 

$('#ios-right').mousedown(function() { 
    clearInterval(TimerWalk); 
    TimerWalk = setInterval(function() { 
     processWalk('right'); 
    }, 100); 
}).mouseup(function() { 
    $div.stop(); 
    clearInterval(TimerWalk); 
}).mouse2touch(); 

Это исправить только для правильного движения, вам может понадобиться для решения других вопросов.

+0

Не могли бы вы помочь мне с другой проблемой в чате? – NotToBrag

+1

Пришлите мне чат-запрос? –

+0

Мне не хватает репутации, но жаль, не могли бы вы опубликовать ее? – NotToBrag

Смежные вопросы