0

私はJavaScript言語でアプリを構築しています。指定されたレートで乱数を生成しています。たとえば、レートを 80 に設定した場合、1 分で 80 個の乱数が生成されることを意味します。これを行うために次のコードを使用しています。

var player = Ti.Media.createSound({
    url : "sound.aiff"
});

var randomfunc = function() {
    randomno = Math.floor(Math.random() * 99);
    player.play();
    d_label1.text = randomno;
};

var start_fun = function(rate1) {

    start_btn.title = "Stop";

    waittime = rate1 * 1000;
    generate = false;
    stoptime = setInterval(randomfunc, waittime);

};

//------------------------------- function which stops displaying rendom numbers-------------------------

Ti.App.stop_fun1 = function() {
    start_btn.title = "Start";
    generate = true;
    clearInterval(stoptime);
    d_label1.text = "00";

};

start_btn.addEventListener('click', function(e) {
    if (generate == true) {
        rate = rate / 60;
        rate = 1 / rate;
        start_fun(rate);

    } else if ( generate == false) {
        Ti.App.stop_fun1();

    }

});

そのため、開始ボタンを押すと、必要に応じて数字の生成が開始されます。数字を生成した後。2回目にスタートボタンを押すと、数字が生成されません。しかし、3 回目のプレス番号は、番号の生成を開始します。同様に、4 回目、6 回目などは生成されませんが、1 回目、3 回目、5 回目などは完全に生成されます。2回ごとに数値が生成されないのはなぜですか?

4

1 に答える 1

0

コードはこのように動作するように設計されています。

要素のクリックをリッスンするイベント リスナーがあります。次に、これが真である場合に条件をテスト (生成) し、start_fun でカウンターを開始します。ただし、start_fun も generate を false に設定します。次にボタンがクリックされると、generate がチェックされ、それが false であることを確認し、stop_fun を実行して true に戻します (ただし、start_fun は実行しません)。必要なことは、カウントダウンが発生した後、start_fun で true に戻すことです。

start_btn をクリックすると、generate が true に設定されます (たとえば)。

if(generate == true) は正しいので、start_fun が呼び出されます。これにより、生成が false に設定されます。

start_btn をもう一度クリックします

今回は generate == false なので stop_fun が実行されます。これは、数値が生成されないことを意味しますが、generate は再び true に設定されます。

start_btn をクリックして generate を true に設定すると、start_fun が実行されます。

于 2013-09-15T18:49:31.333 に答える