2013-11-25 1 views
0

Я пытаюсь создать приложение Cordova, которое будет работать одновременно с одним событием с одним касанием.Phonegap/Cordova способ одновременно обрабатывать события с одним касанием на Android

Таким образом, пользователь может продолжать касаться кнопки при перемещении слайдера или касании других кнопок.

Приложение будет работать только на Android, а точнее, на Android 4.1.2 и более. Я использую Cordova 3.1.0.

На данный момент я делаю следующее, не повезло:

var app = { 
    initialize: function() { 
     this.bindEvents(); 
    }, 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    onDeviceReady: function() { 
     app.handleSerial(); 
    }, 
    handleSerial: function() { 
     var tht = document.getElementById('manuel'); 
     var speed1 = document.getElementById('rythme'); 
     var speed2 = document.getElementById('melodie'); 
     var speed3 = document.getElementById('sequenceur'); 

     tht.addEventListener('touchstart', function(event) { 
      serial.write('1'); 
     }, false); 
     tht.addEventListener('touchend', function(event) { 
      serial.write('0'); 
     }, false); 
     speed1.addEventListener('touchstart', function(event) { 
      serial.write('2'); 
     }, false); 
     speed2.addEventListener('touchstart', function(event) { 
      serial.write('3'); 
     }, false); 
     speed3.addEventListener('touchstart', function(event) { 
      serial.write('4'); 
     }, false); 

     var errorCallback = function(message) { 
      alert('Error: ' + message); 
     }; 

     serial.requestPermission(
      function(successMessage) { 
       alert(successMessage); 
       serial.open(
        {baudRate: 9600}, 
        function(successMessage) { 
         alert(successMessage); 
        }, 
        errorCallback 
       ); 
      }, 
      errorCallback 
     ); 
    } 
}; 

Но это не работает, в то время как tht касании кнопки я не могу коснуться других кнопок, чтобы обрабатывать их события.

Любая идея?

Спасибо!

ответ

0

Закончен, делая это, где buttons является ближайшим общим предком. Работает хорошо.

var buttons = document.getElementById('buttons'); 
buttons.addEventListener('touchstart', function(event) { 
    for (var i = 0; i < event.touches.length; i++) { 
     var touch = event.touches[i]; 
     var elem = document.elementFromPoint(touch.pageX, touch.pageY); 
     switch (elem.id) { 
      case 'manuel': 
       serial.write('1'); 
       break; 
      case 'rythme': 
       serial.write('2'); 
       break; 
      case 'melodie': 
       serial.write('3'); 
       break; 
      case 'sequenceur': 
       serial.write('4'); 
       break; 
     } 
    } 
}); 
buttons.addEventListener('touchend', function(event) { 
    var contains = false; 
    for (var i = 0; i < event.touches.length; i++) { 
     var touch = event.touches[i]; 
     var elem = document.elementFromPoint(touch.pageX, touch.pageY); 
     if (elem.id === 'manuel') contains = true; 
    } 
    if (!contains) serial.write('0'); 
}); 

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

  • Нет связанных вопросов^_^