教室のローカル ネットワークで動作する分散 iPod Touch アプリを作成します。私たちのアプリの 1 つにはコントローラーがあり、生徒でいっぱいの教室が部屋の前にある共有ディスプレイの周りにアイコンを表示できるようにします。
生徒が指を押したままにすると、コントローラーは setInterval() を使用してアイコンを繰り返し移動します。アイコンがクラス表示上のオブジェクトにヒットすると、サーバーはアプリにメッセージを送信して別のページに変更します。iPodが更新されるまで、これらはすべてJQM 1.0.2で機能していました。PhoneGap、JQ JQMのメジャーアップデートを行いました。IOS 6.1.3 から JQM 1.3.1 に切り替えました。過去に live() イベント関数を使用して成功しました。現在、on() に問題があります。
ここにコードを表示するために最善を尽くします。
この部分はうまくいきます:
// Handles controller direction events to move icon on shared display
$(document).on('vmouseup vmousedown', ".controller", function(event){
var evType, direction;
evType = event.type;
event.preventDefault();
direction = $(this).attr("data");
if (repeater != 0){clearInterval(repeater)};
repeater = 0;
if(evType == 'vmousedown'){
move(direction);
repeater = setInterval(function(){move(direction)},200);
} else {
clearInterval(repeater);
repeater = 0;
}
});
この部分は、IOS デバイスのキャプチャ ページ (コントローラーを含む) をフリーズします (OSX の Safari ブラウザーで正常に動作します)。変更したいPage("#operate"):
// Handles message from the server that an object was captured
function handleOperations(fields) {
var tag = fields.tag;
var message = fields.content.value;
switch (tag) {
case 'collective' :
expression = message;
$(".group-expression").html(expression);
break;
case 'capture' :
term = message;
$(".captured-expression").html(message);
$.mobile.changePage("#operate");
break;
case 'flags' :
updateOps(message);
break;
}
}
これらの各ケースには、進行中の何かを中断することが含まれます。過去に live() を使用して、私たちの仕事で頻繁に発生するこの種のことを行いました。サーバーは、クライアントが行っていることをしばしば中断します。live() 機能を取り戻すにはどうすればよいですか?
アップデート:
changePage() の直前に alert() を挿入すると機能します。任意の考えをいただければ幸いです。今かなり混乱しています。アラートが常にポップアップすることはありません。