Hello my friends, I’m having trouble with the speed of my program.
I set the default speed to 60 fps, but over time the increment of my variable “time” is slowly increasing.
I wonder how I could solve this “bug”.
I already called setup (), but it did not work.
Maybe I can solve it if there is any code that totally resets the sketch.
Below is my code.
<html>
<head>
<title>Semáfaro</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.6.6/processing.min.js"></script>
<script type="text/processing" data-processing-target="processing-canvas">
var vermelho;
var laranja;
var verde;
var tempo;
void setup() {
size(1300, 400);
background(255);
frameRate(60);
tempo = 0;
vermelho = false;
laranja = false; //Colocamos todas as cores como false.
verde = false;
}
// Criamos o projeto do que seria um Semáfaro, onde guardaremos as cores vindo como true/false
var Semafaro = function(vermelho, laranja, verde){
this.vermelho = vermelho;
this.laranja = laranja;
this.verde = verde;
};
//Aqui criamos o método para inicialmente desenhar nosso Semáfaro
Semafaro.prototype.draw = function() {
//Declaramos um array para guardarmos as cores
var cores = [];
//Se a cor vermelha vier como true, então guardamos a cor vermelha, se não guardaremos a cor de desligado, sendo ela preta.
if(this.vermelho){
cores.push(255);
cores.push(0);
cores.push(0);
}else{
cores.push(5);
cores.push(5);
cores.push(5);
}
//Se a cor verde vier como true, então guardamos a cor laranja, se não guardaremos a cor de desligado, sendo ela preta.
if(this.laranja){
cores.push(237);
cores.push(76);
cores.push(7);
}else{
cores.push(5);
cores.push(5);
cores.push(5);
}
//Se a cor verde vier como true, então guardamos a cor verde, se não guardaremos a cor de desligado, sendo ela preta.
if(this.verde){
cores.push(15);
cores.push(235);
cores.push(7);
}else{
cores.push(5);
cores.push(5);
cores.push(5);
}
fill(13, 12, 12);
rect(800,100,100,190);
strokeWeight(15);
line(850,100,850, 0);
//Essa parte é a parte onde colocamos as cores que foram adicionadas ao nosso array de cores
fill(cores[6], cores[7], cores[8]);
ellipse(850,260,40,40);
fill(cores[3], cores[4], cores[5]);
ellipse(850,200,40,40);
fill(cores[0], cores[1], cores[2]);
ellipse(850,140,40,40);
};
//Esse nosso método é para ligar o nosso Semáfaro
Semafaro.prototype.ligar = function(){
//Se o tempo for acima de 1000, 'ligue' o vermelho.
if(tempo > 0){
this.verde = false;
this.vermelho = true;
this.laranja = false;
}
//Se o tempo for acima de 3000, 'ligue' o laranja e 'apague' o vermelho.
if(tempo > 300){
this.verde = false;
this.vermelho = false;
this.laranja = true;
}
//Se o tempo for acima de 5000, 'ligue' o verde e 'apague' o laranja.
if(tempo > 600){
this.verde = true;
this.laranja = false;
this.vermelho = false;
}
//Se o tempo for acima de 7000, reiniciaremos a nossa apresentação do Semáfaro
if(tempo === 900){
this.desligar(); //Usamos o método interno para desligar nosso Semáfaro.
}
//Aqui mostramos o nosso tempo.
println("Tempo em Segundos:");
println(tempo);
};
//Aqui esta o nosso método para desligar o nosso Semáfaro
Semafaro.prototype.desligar = function(){
setup();
};
//Parte da Criação dos objetos, onde criamos o nosso Semáfaro, inicialmente desligado.
var semafaro1 = new Semafaro(vermelho,laranja,verde);
//Aqui criamos uma função para executar o nosso método do Semafaro para o desenhar.
var desenharCena = function (){
semafaro1.draw();
};
//Essa função draw é a função especial da biblioteca
draw = function() {
desenharCena(); //Iniciamos o nosso Cenario.
semafaro1.ligar(); //Ligamos o nosso semafaro.
tempo++; //E devido a essa função especial e ao ++, o tempo vai aumentando em +1.
};
</script>
<canvas id="processing-canvas" width="800" height="auto"> </canvas>
</body>
</html>