2012-03-06 28 views
22

मैं एचटीएमएल 5 कैनवास का परीक्षण कर रहा हूं और स्पर्श सक्षम उपकरणों के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं। जबकि मैं इसे आईओएस उपकरणों में काम कर रहा हूं, मैं इसे एंड्रॉइड पर काम नहीं कर सकता। मैंने इसे घटना में संकुचित कर दिया है। पेजएक्स निर्देशांक वापस नहीं कर रहा है, बल्कि इसके बजाय 0 लौटा रहा है, या अपरिभाषित (ब्राउज़र पर आधारित)।एंड्रॉइड डिवाइस पर जावास्क्रिप्ट में टचवेन्ट्स के समन्वय प्राप्त नहीं कर सकते

मैं ओपेरा मोबाइल और डॉल्फिन ब्राउज़र में विषैली गैस 7.1 चल रहा है मेरे फोन पर यह परीक्षण किया है, और यह भी एक Galaxy Tab 10.1 (एंड्रॉयड 3.1) मानक ब्राउज़र चलाने पर।

मैंने event.pageX, event.layerX और event.clientX निर्देशांक प्रदर्शित करने वाले टचस्टार्ट ईवेंट पर एक अलर्ट दिखाने के लिए कोड को संशोधित किया है (मुझे पता है कि क्लाइंटएक्स केवल आईओएस पर काम करना चाहिए)।

canvas.addEventListener('touchstart', function(e) { 
if (readyToDraw){ 
    alert("PageX: "+e.pageX+","+e.pageY+"\n LayerX: "+e.layerX+","+e.layerY+"\n + clientX: "+e.clientX+","+e.clientY); 
    // prevent the browsers default action! 
    e.preventDefault(); 
    paint = true; 
    // Get coordinates 
    var c = getCoords(e); 
    addClick(c.x, c.y, false); 
} 
}); 

मैं पूरी आईओएस में काम कर ड्राइंग मिल गया है लेकिन फिर भी एंड्रॉयड निर्देशांक, किसी भी विचार रजिस्टर करने के लिए नहीं मिल सकता है?

अंतिम संपादन: मैंने इस मुद्दे को हल किया, स्वीकृत उत्तर देखें।

+0

देखें [यह] (http://stackoverflow.com/questions/6099268/does-html5-support-touch-on- मोबाइल-phones)। यदि आप अभी भी इसे काम नहीं कर पा रहे हैं, तो मुझे लगता है कि फोनगैप काम करेगा। – toto2

+0

धन्यवाद, इससे मुझे बहुत मदद मिली! –

+0

@Stu अच्छा यह काम कर रहा है। क्या आप अपने संपादन से उत्तर दे सकते हैं, इसलिए यह प्रश्न "अनुत्तरित प्रश्न" टैब छोड़ देता है। :) धन्यवाद! –

उत्तर

27

अंतिम संपादन: ठीक है, मुझे यह मिल गया है, अगर कोई इसे पाता है और आपको एक ही समस्या है तो आपको ईवेंट के भीतर टच सरणी तक पहुंचने की आवश्यकता है, और यदि केवल एक स्पर्श (मल्टी टच के बजाए) का उपयोग करना पहला आइटम लेता है

var touch = event.touches[0]; 
var x = touch.pageX; 
var y = touch.pageY; 
// or taking offset into consideration 
var x_2 = touch.pageX - canvas.offsetLeft; 
var y_2 = touch.pageY - canvas.offsetTop; 
+0

पवित्र बकवास मैं अपने बालों को खींच रहा था। धन्यवाद – user151496

+1

यहां जो एंड्रॉइड उपयोगकर्ता समाप्त होते हैं, उनके लिए 'event.originalEvent.touches [0] 'का उपयोग करें ... – Shikkediel

+0

आपने अपना जीवन बचाया। मैंने कॉर्डोवा ऐप में घंटों के लिए त्रुटि खोजने की कोशिश की। अंत में मैं इसे सभी प्लेटफॉर्म पर रिलीज़ कर सकता हूं। – kaiserkiwi

0

मेरे लिए काम नहीं किया था (iScroll 5 संदर्भ में): सरणी से बाहर है, के रूप में नीचे, या आप इसे ऑफसेट करने के लिए करता है, तो है कि नहीं सटीक है आवश्यकता हो सकती है। changedTouches[0] इसके बजाए mouse click event.pagex is NaN in mobile chrome browser (v30.0.1599.92) में प्रस्तावित किया गया था।