2012-12-18 67 views
2

我無法調試此問題:如果您在iPad上籤出此jfiddle,您會看到您可以點擊每個圓圈來更改上述內容。當你持有一個圓圈時,你會看到它變成綠色(圖像交換)。動感js touchstart/touchend混淆ipad

http://jsfiddle.net/SWj9m/

現在,把你的手指並按住一個,然後將您的手指,或使用其他手指點擊另一個環,而持有的前一個。現在,iPad touch事件變得混亂,而綠色(touchstart)事件保持原位而不是離開。我們結束了多個被綠色卡住的圈子,這意味着從未發生過觸發事件。

任何人看到這個問題之前或有一個想法如何甚至接近調試?

此片段展示了touchstart /結束事件

    applications.on('touchstart mouseover', function() { 
         writeMessage(messageLayer, 'touchstart applications circle'); 
         this.setFill({ image: images.applicationshover}); 
         layer.draw(); 
        }); 
        applications.on('touchend mouseout', function() { 
         writeMessage(messageLayer, 'Mouseup applications circle'); 
         this.setFill({ image: images.applicationsimage}); 
         layer.draw(); 
        }); 
+0

即使在網站上的觸摸教程: http://www.html5canvastutorials.com/kineticjs/html5-canvas-mobile-events/ 你的iPad上打開這件事,觸摸紅色圓圈,並拖動手指關閉 - touchstart事件保持不變,直到再次觸摸該圓圈。 也許有一些方法可以創建一個腳本,說'如果touchmove走出畫布,然後touchend'? – RooWM

回答

2

我勉強kineticjs一個初學者,但因爲這個問題已經坐了一會兒這裏沒有答案,我會在它採取刺傷。

不幸的是,觸摸和鼠標事件並不像您所希望的那樣平行。 「touchstart」類似於「mousedown」而不是「mouseover」,「touchend」類似於「mouseup」而不是「mouseout」。我在我自己的一些代碼中遇到類似的問題。

我對此的最好想法是使用「mouseover」和「touchmove」,這似乎是類似的。在任何環中的mouseover/touchmove或mousedown/touchstart上,將該環設置爲綠色,並將所有設置爲,其他環則回藍。此外,在mouseup/touchend上將所有戒指設置爲藍色。

仍然留下一個未處理的案例,當用戶觸摸外環時,然後移出背景,然後結束觸摸。你使用「mouseout」來處理桌面,但沒有「touchout」爲ipad做同樣的事情。在我的類似情況的代碼中,我添加了window.touchend的偵聽器。我還沒有嘗試過,但我的另一個想法是有一個與舞臺大小的矩形作爲背景層的圖層,並觀察該對象上發生的touchend。

如果這不是最好的方法來解決這個問題,那麼希望有人真正知道他們在說什麼會介入我的筆直!

+0

我實際上最終只使用'tap'successfuly: http://www.html5canvastutorials.com/kineticjs/html5-canvas-mobile-events/ – RooWM