2012-06-26 2 views
14

Я работаю на платформе трансформатора и разрабатываю чертежную пластину. Я использую PhoneGap (javascript), чтобы написать код вместо JAVA.Событие «touchmove» в системе Android: Трансформатор Прайм

Но событие touchmove довольно странно.

Я думаю, что, двигая пальцем по пэду, он будет непрерывно собирать координаты, которые я нажимаю на холст. НО ЭТО НЕ! Это смешно, он только собирает координату «1»: первая точка на холсте, к которому движется мой палец.

Вот мой код о «Touch & & Move событие»:

function touchStart(event){ 
    if (event.targetTouches.length == 1) { 
    var touch = event.targetTouches[0];  

     if (event.type == "touchstart") { 
      line_start_x= touch.pageX- canvas_org_x; 
      line_start_y= touch.pageY- canvas_org_y; 
      context.beginPath();       
      context.moveTo(line_start_x, line_start_y); 

     }//if   
    }//if 1 
}//function. 

function Touch_Move(event){ 
    line_end_x= event.touches[0].pageX- canvas_org_x; 
       line_end_y= event.touches[0].pageY- canvas_org_y; 
       context.lineTo(line_end_x, line_end_y); 
       context.stroke(); 
       test++;     
} 

Я не знаю, почему каждый раз, когда я пошевелить пальцем на площадку, пытаясь нарисовать линию, кривую или ничего Я хочу. По мере перемещения пальца появляется только сегмент ОЧЕНЬ КОРОТКО. Поэтому я объявляю переменную: «var test = 0» в начале этого js-файла. Я обнаружил, что, хотя я двигаю пальцем по пэду, не оставляя его или останавливаясь, значение «тест» остается 1. Это означает, что я двигаю пальцем по нему. Но он не непрерывно запускать событие: «Touch_Move».

Что теперь делать? Мне нужно соответствующее событие для «mousemove» на сенсорной панели. По крайней мере, событие должно непрерывно запускаться.

                Thank you! 

ответ

38

О, Иисус. Я, наконец, найти ответы: Please take reference for this site.

Если вы работаете на системе Android, помните «TouchMove» только огонь РАЗ как ваш палец движется вокруг площадки. Так что если вы хотите нарисовать линию или что-то, что вам нужно сделать это:

function onStart (touchEvent) { 
if(navigator.userAgent.match(/Android/i)) { // if you already work on Android system, you can  skip this step 
touchEvent.preventDefault();  //THIS IS THE KEY. You can read the difficult doc released by W3C to learn more. 
} 

И если у вас есть больше времени, вы можете прочитать документ в W3C, о введении «movetouch» , это действительно трудно понять, , Док сосет.

+4

Итак, у меня есть некоторые функции, которые я хочу перейти на следующий слайд, когда они прокручиваются влево/вправо (на полноэкранном слайд-шоу). Использование 'preventDefault()' заставляет его работать, но тогда регулярная прокрутка (вверх и вниз) НЕ работает (некоторые слайды выше экрана ... слайд-шоу не может быть лучшим дескриптором для того, что на самом деле есть, но вы получаете идея). – CWSpear

+1

Я также должен был добавить 'prevenDefault' к самому событию' touchmove', чтобы сделать эту работу. – ngryman

+1

Можно ли включить прокрутку? Мне нужно и прокрутку, и непрерывную touchmove одновременно. –

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