我將iOS支持添加到使用Flame.js的Ember應用程序中。大多數Flame.js小部件don't have built-in support for touch events at the moment,所以我正在努力將其添加到我需要的。我有touchStart
和touchEnd
工作得很好,用於點擊和某些狀態轉換。處理iOS和Ember中的touchMove事件
但是,touchMove
到目前爲止一直是一團糟。我需要拖動它,爲此我需要跟蹤運動開始的位置和位置。到目前爲止,我一直無法從touchMove
獲得所有這些信息。 Variousresources建議我應該在我的數據中尋找event.touches
數組,但是我迄今爲止構建的jsFiddles在我試圖獲得該數組上的length
時拋出TypeError
,他們聲稱這個數組未被定義。 (通常的地方看看,event.pageX
,event.pageY
等也是不確定的。)
我帶一臺iPad,並與Phantom Limb測試,並與後者我是能夠通過訪問originalEvent
在數據獲取,但在實際的iPad上不起作用,我想這是因爲originalEvent
屬性是Phantom Limb工作方式的一個僞影。 (我的理論是,訪問originalEvent
正在訪問的原始mouseMove
是幻肢改造成一個touchMove
。)
爲什麼event.touches
陣列未定義給我嗎?更重要的是,我可以在哪裏獲得觸摸位置數據,以便拖動?
這是我的most representative jsFiddle。單擊該按鈕可以獲得一個Panel,如果這個工作正常,您可以通過拖動它的標題欄來重定位它。 App.TestPanel的titleView
中Flame.State的擴展名覆蓋了Flame本身的原始狀態。
花了稍微修改一下(我結束了其不僅僅是'touches','pageX'和'pageY'正常化更多),但它工作得更好了。甜! – pjmorse
@pjmorse我很想聽聽你還需要什麼來規範化以及如何做到這一點。要旨? –
'初始畫面[X | Y]'和'客戶端[X | Y]'。我仍然有一些毛病 - 也許今晚。 – pjmorse