FSOSS 2010/processing.js/timing

From CDOT Wiki
Jump to: navigation, search
/*
  FSOSS 2010
  Andor Salga
  Example of timing
*/

// pixels/second
// 250 will go from 0 to 500 in 2 seconds
float velocity = 250.0f;
float position = 0.0f;
int deltaTimer = 0;
boolean wasteCycles = false;

void setup(){
  size(500, 500);
}

void draw(){
  background(#663399);

  // displacement = velocity * seconds
  position += velocity * getDelta()/1000.0f;

  // Wrap the object
  if(position > 500){
    position = 0; 
  }

  // Regardless of lag, garbage collection or rendering speed,  
  // position will increase by the correct velocity.
  if(wasteCycles){
    for(int i = 0; i < 10000; i++){
      for(int j = 0; j < 10000; j++){
      }
    }
  }

  rect(position, height/2.0f, 40, 40);
}

/*
  Returns the number of milliseconds which 
  have elapsed since last draw
*/
float getDelta(){
  float millisElapsed = millis() - deltaTimer;
  deltaTimer = millis();
  return millisElapsed;
}

Run me