Phonegap/Cordova在Android上同时处理多个触摸事件的方式



我正在尝试创建一个能够同时处理多个触摸事件的Cordova应用程序。

因此,用户可以在移动滑块或触摸其他按钮的同时继续触摸按钮。

该应用程序将只在安卓系统上运行,更确切地说是在安卓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按钮时,我不能触摸其他按钮来处理它们的事件。

知道吗?

谢谢!

最终做到了这一点,其中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');
});

相关内容

  • 没有找到相关文章

最新更新