0

ここに含めたダミー サンプルとロジックが同じプログラムがあります。実行されない単純なものを試しましたwhile (1)(少なくともUIは表示されません)。このサンプルは、whileループを終了する によって変更される変数設定に基づいてループを実行しaddEventListener()ます。ただし、 として機能しwhile (1)ます。簡単に言えば、パスワードの入力を待って、それが一致することを確認する必要があります。そうでない場合は、ループを続けます。一致する場合、プログラムは別のループ (サンプルには示されていません) に進みます。このループは、プログラムが実行されている限り実行する必要があります。この 2 番目whileは、ユーザー入力に基づいていくつかの機能を実行します。ユーザー入力があるたびに、while実行されます。別のスレッドを使用しないことを好みます。ループを作成するロジックはすべて同じように反応するようです。つまり、実行しないか、少なくとも目に見える実行はありません。別の言い方をすれば、なぜ機能しないのですwhile (1)for (;;)。任意の支援をいただければ幸いです。

//app.js
var debugText = Titanium.UI.createLabel({
    top: 600,
    left: 0,
    width: 500,
    height: 100,
    color: '#777',
    font:{fontSize:40},
    hintText: 'debug text'
});
var entryCodeText = Titanium.UI.createTextField({
    top: 300,
    left: 0,
    width: 400,
    height: 100,
    color: '#777',
    font:{fontSize:40},
    hintText: 'Enter Passcode'
});

//add labels and fields to window
    win.add(entryCodeText);
    win.add(debugText);
    win.open();

while (exitCode == 0) {
    // do stuff
} // end of exitCode while loop
// start of continuous program loop
while (1) {
    // if no event, just continue loop
    // if event , execute several functions and continue with loop
} // end of while(1) loop - runs as long as program runs
//*************************************************************************
entryCodeText.addEventListener("return", function(e) {

    if (computeCode(entryCodeText.value)< 0) {
        debugText.text = "failed computecode";
        exitCode = 0;
        continue;
    } else {
        debugText.text = "passed computeCode()";
        exitCode = 1;
        break;
    }
});
//continue with other logic on break and exitCode = 1
//************************************************************
function computeCode(textValue) {
    // do stuff to the textValue
}
4

2 に答える 2

0
while(true)

永久に実行する必要があります。

于 2013-03-14T01:41:44.697 に答える
0

おそらく、keyup または keydown evt を使用したほうがよいでしょう。

そうは言っても、このようにする必要がある場合は、setTimeout 関数を使用できます。

スクリプトの実行に関しては、(ブラウザーの内部 UI 操作の後であっても) 常に最後に実行されるため、UI がロックされるのを防ぎます。

この例では、2 つのテキスト ボックスを使用しています。最初の値が正しい値になると、内側のループに移動します。

<html>
  <body>
  UserName: <input type="text" id="txt" /><br>
  Password: <input type="text" id="txt2" />


<script>
    var txt =  document.getElementById('txt'),
        txt2 = document.getElementById('txt2');
    var loop, innerLoop;
    (function loop(){
        setTimeout(function(){
            if(txt.value === 'name'){
            alert('correct username entered');
                            //new loop
                (function innerLoop(){ 
                    setTimeout(function(){
                        if(txt2.value === 'password') {
                            alert('correct password entered');
                            return;
                        }
                        else setTimeout(innerLoop,0); 
                    },0);
                })();
                return;
            }
            else setTimeout(loop,0);
        },0);
    })();
</script>

</body>
</html>

デモ: http://jsfiddle.net/Vg5ND/

于 2013-03-14T02:11:56.997 に答える