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

    }

});

因此,当我按下开始按钮时,数字的生成会根据需要开始。生成数字后。当我第二次按下开始按钮时,数字不会生成。但第三次再次按数字开始生成数字。同样,第 4、第 6 等时间数字不会生成,但它们会在第 1、第 3、第 5 等时间完美生成。为什么每 2 次后没有生成数字?

4

1 回答 1

0

您的代码旨在以这种方式工作。

您有一个事件侦听器来侦听元素的点击。然后它测试一个条件(生成),如果这是真的,那么它会在 start_fun 中启动计数器。但是,start_fun 也将 generate 设置为 false。下次单击该按钮时,它会检查生成,查看它是否为 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 回答