2

Flame.js を使用する Ember アプリケーションに iOS サポートを追加しています。現時点では、ほとんどの Flame.js ウィジェットにはタッチ イベントのサポートが組み込まれていないため、必要なものに追加する作業を行っています。クリックと特定の状態遷移については、問題なく動作していますtouchStarttouchEnd

しかし、touchMoveこれまでのところ混乱しています。ドラッグするために必要です。そのためには、動きが始まった場所と現在の場所を追跡する必要があります。これまでのところ、 からすべての情報を一貫して取得することはできませんでしたtouchMoveさまざまな リソースは、データの配列を調べる必要があることを示唆していevent.touchesますが、これまでに作成した jsFiddles は、その配列TypeErrorを取得しようとするとすべてスローさlengthれ、未定義であると主張しています。(通常のevent.pageXevent.pageY、 などの場所も定義されていません。)

私は iPad とPhantom Limbでテストしており、後者では にアクセスしてデータを取得できましたが、実際の iPad では機能しません。属性は Phantom Limb の動作のアーティファクトであるoriginalEventためだと思いますoriginalEvent. (私の理論では、アクセスはファントム リムが に変換されたoriginalEventオリジナルにアクセスすることです。)mouseMovetouchMove

event.touches配列が定義されていないのはなぜですか? さらに言えば、ドラッグできるようにタッチ位置データをどこで取得できますか?

これが私の最も代表的な jsFiddleです。ボタンをクリックしてパネルを取得します。これが機能している場合は、タイトル バーをドラッグして位置を変更できます。App.TestPanel の Flame.State の拡張機能はtitleView、Flame 自体の元の状態をオーバーライドしています。

4

1 に答える 1

4

ファントムリムのアーティファクトだけではないと思います。同様の課題があり、以下を使用します。

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;
    }
};
于 2012-10-16T02:56:24.117 に答える