Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理-按下按钮3秒-忽略进一步按下按钮_Javascript_Timer_Processing - Fatal编程技术网

Javascript 处理-按下按钮3秒-忽略进一步按下按钮

Javascript 处理-按下按钮3秒-忽略进一步按下按钮,javascript,timer,processing,Javascript,Timer,Processing,我有一个包含Arduino输入的处理脚本 在按下按钮时,我有一个元素“增长”,椭圆持续3秒,然后恢复正常 我似乎无法解决的是如何在这3秒钟内忽略进一步的按钮按下 这是简化的代码 int savedTime; int growTime = 3000; void setup() { //Start counting milliseconds savedTime = millis(); } void draw() { if (arduino.digitalRead(2) =

我有一个包含Arduino输入的处理脚本

在按下按钮时,我有一个元素“增长”,椭圆持续3秒,然后恢复正常

我似乎无法解决的是如何在这3秒钟内忽略进一步的按钮按下

这是简化的代码

int savedTime;
int growTime = 3000;

void setup() {
    //Start counting milliseconds
    savedTime = millis();
}

void draw() {
    if (arduino.digitalRead(2) == Arduino.HIGH){
        //Starts Timer for 'Grow' animation
        savedTime = millis();
    }

    int passedTime = millis() - savedTime;

    if (passedTime >= growTime) {
        opacity = 10;
        if (circleSize > 0){
            scale(circleSize);
            noStroke();
            circleSize -= 0.0009;
        }
    }else{
        scale(circleSize);
        noStroke();
        circleSize += 0.0003;
        opacity = 70;
    }
    ellipse(0, 0, circleSize, circleSize);
}
我知道我当前的代码检查最后一次按下按钮的时间,如果我继续按下按钮,“增长”效果将持续激发

如果“增长”效应正在发生,我如何做到这一点,进一步的按钮按下被忽略


我希望这是有意义的,我已经包括了人们需要了解的内容。这是一个更大的剧本的一部分,所以如果我错过了一些重要的东西,请原谅

< P>你应该以某种方式存储你已经在处理最后一个输入的中间,以便进一步的点击被忽略。

我会使用一个单独的布尔变量,比如processing,或者类似的东西,在更新上次保存的时间之前检查您是否没有处理。 您也可以不使用任何附加变量在savedTime上处理无效值,但我认为使用一个附加变量,一切都会非常清楚

bool processing = false;
int savedTime;
int growTime = 3000;

void setup() {
    //Start counting milliseconds
    savedTime = millis();
}

void draw() {
    if (!processing && arduino.digitalRead(2) == Arduino.HIGH){
        //Starts Timer for 'Grow' animation
        savedTime = millis();
        processing = true;
    }

    int passedTime = millis() - savedTime;

    if (passedTime >= growTime) {
        opacity = 10;
        if (circleSize > 0){
            scale(circleSize);
            noStroke();
            circleSize -= 0.0009;
        } else {
            processing = false;
        }
    }else{
        scale(circleSize);
        noStroke();
        circleSize += 0.0003;
        opacity = 70;
    }
    ellipse(0, 0, circleSize, circleSize);
}
没有尝试代码,所以可能有语法错误。希望有帮助


编辑:我假设在椭圆完全减小之前您不想处理任何其他输入,如果您想在3秒“增长”后处理新输入,您可能需要移动
processing=false我添加的else块之外的语句。

谢谢。是的,有一些语法上的改变,但你破解了它。我有一种感觉,它会是那样的,但我是新的,并一直盯着它太久了!再次感谢。