Поэтому мне нужно что-то вроде следующего: в основном это двухдисковый тачпад, который пользователь прикасается (и держит прикосновение) пальцем, чтобы перенести персонажа определенным образом. Это отлично работает на моем ПК, но, похоже, это не работает, когда я тестирую его на iOS. Причина в том, вероятно, потому, что нет мыши, поэтому mousedown и mouseup не работают. Есть ли альтернативы? Я пытался использовать keydown и keyup, но они тоже не работали.
Вот мой код:
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 на iOS
Используйте очень легкий вес jquery.mouse2touch.min.js плагин для имитации событий мыши для событий касания.
Примените поведение обработчика событий мыши, чтобы коснуться событий, таких как ниже $("#elmentID").mouse2touch()
ИЛИ $(".elment-css-class").mouse2touch()
который выполнит задание, чтобы скопировать все функциональные возможности на основе мыши, чтобы коснуться,
В коде вы можете вызвать 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: для другого связанного вопроса и здесь я предоставляю тот же ответ.
Проблема с таймером, вы должны очистить интервал времени перед перемещением. Ваша глобальная переменная 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();
Это только исправление для правильного перемещения, вам может потребоваться решить другие проблемы.