2

この問題をデバッグできません。iPad でこの jfiddle を確認すると、各円をクリックして上記の内容を変更できることがわかります。1 つの円を保持すると、緑色に変わります (イメージ スワップ)。

http://jsfiddle.net/SWj9m/

次に、指を取り、1 つを保持してから指を上にドラッグするか、別の指を使用して前のリングを保持しながら別のリングをクリックします。ここで、iPad のタッチ イベントが混乱し、緑色 (touchstart) のイベントが離れずに残ります。touchend イベントが発生しなかったことを意味する緑色でスタックされた複数の円が表示されます。

以前にこの問題を見た人、またはデバッグにアプローチする方法を知っている人はいますか?

このスニペットは touchstart/end イベントを示しています

                    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();
                    });
4

1 に答える 1

2

私はkineticjsの初心者ではありませんが、質問がしばらくここに答えられていないので、それを突き刺します。

残念ながら、タッチイベントとマウスイベントは、期待したほど互いに並行していません。「touchstart」は「mouseover」ではなく「mousedown」に類似しており、「touchend」は「mouseout」ではなく「mouseup」に似ています。私は自分のコードのいくつかで同様の問題にぶつかっています。

これについて私が持っている最善のアイデアは、類似しているように見える「マウスオーバー」と「タッチムーブ」を使用することです。任意のリングのマウスオーバー/タッチムーブまたはマウスダウン/タッチスタートで、そのリングを緑色に設定し、他のすべてのリングを青色に戻します。また、mouseup / touchendで、すべてのリングを青に設定します。

それでも、ユーザーが外輪に触れてから背景に移動し、タッチを終了すると、1つのケースが未処理のままになります。デスクトップ用に「マウスアウト」を使用していますが、iPad用に同じことを行う「タッチアウト」はありません。同様の状況のコードで、window.touchendのリストエンダーを追加しました。試したことはありませんが、ステージサイズの長方形のレイヤーを背景レイヤーとして、そのオブジェクトでタッチエンドが発生するのを監視するというアイデアがありました。

それがこれにアプローチする最良の方法ではない場合、うまくいけば、彼らが話していることを実際に知っている誰かが私をまっすぐにするために介入するでしょう!

于 2013-02-16T02:21:40.553 に答える