我正在为一个使用Flame.js的Ember应用添加iOS支持。大多数Flame.js的小部件 目前还没有对触摸事件的内置支持。所以我正在努力把它添加到我需要的人。我已经有了 touchStart
和 touchEnd
在点击和某些状态转换时工作得很好。
然而, touchMove
到目前为止,一直是一团糟。我需要它来进行拖动,为此我需要跟踪运动开始的位置和它的位置。到目前为止,我还没能持续地从 touchMove
. 各种 资源 建议我应该寻找在 event.touches
数组,但到目前为止,我构建的jsFiddles都会抛出 TypeError
当我试图获得 length
的数组上,他们声称该数组是未定义的。(通常要找的地方。event.pageX
, event.pageY
等也未定义)。)
我正在用iPad和 幻肢,而对于后者,我能够通过访问的方式来获取数据。originalEvent
但这在实际的iPad上是行不通的,我认为是因为 originalEvent
属性是Phantom Limb工作方式的产物。我的理论是,访问 originalEvent
正在访问原来的 mouseMove
幻肢变身成的那只幻肢 touchMove
.)
为什么是 event.touches
对我来说,数组未定义?更重要的是,我在哪里可以获得触摸位置数据,以便我可以拖动?
这是我的 最具代表性的jsFiddle. 点击按钮得到一个Panel,你应该能够通过拖动它的标题栏来重新定位,如果这是工作。中的Flame.State的扩展。titleView
的App.TestPanel覆盖了Flame本身的原始状态。
我不认为这只是PhantomLimb的产物。我们也有类似的挑战,用的是下面的。
normalizeTouchEvent = function(event) {
if (!event.touches) {
event.touches = event.originalEvent.touches;
}
if (!event.pageX) {
event.pageX = event.originalEvent.pageX;
}
if (!event.pageY) {
event.pageY = event.originalEvent.pageY;
}
};