| 
/** | 
 | 
 * Instance mode implementation of a simple sketch that draws blue circles | 
 | 
 * on a white background when the user moves the mouse cursor over it, basing | 
 | 
 * the size of the circles on how fast the cursor is moving. If the user clicks | 
 | 
 * and drags the mouse it draws white circles on a blue background instead. | 
 | 
 **/ | 
 | 
class GetStarted2 { | 
 | 
  /** | 
 | 
   * The constructor sets up the p5 functions | 
 | 
   * | 
 | 
   * @param {object} p: the `p5` object | 
 | 
   * @param {string} parent_div_id: ID of the div to attach the canvas to | 
 | 
   * @param {integer} height: Pixel-heght for the canvas | 
 | 
   **/ | 
 | 
  constructor(p, parent_div_id, height){ | 
 | 
    /** | 
 | 
     * Creates the canvas using ``height`` and the width of the parent div | 
 | 
     * Also sets up some coloring | 
 | 
     **/ | 
 | 
    p.setup = function() { | 
 | 
      var canvas = p.createCanvas($("#" + parent_div_id).outerWidth(true), | 
 | 
                                  height); | 
 | 
      p.background(255); | 
 | 
      p.strokeWeight(3); | 
 | 
      p.stroke(0, 0, 255); | 
 | 
      p.fill(255); | 
 | 
    }; | 
 | 
 | 
 | 
    /** | 
 | 
     * sets the background and fill to blue | 
 | 
     * and the stroke to white | 
 | 
     **/ | 
 | 
    p.mousePressed = function() { | 
 | 
      p.background(0, 0, 255); | 
 | 
      p.fill(0, 0, 255); | 
 | 
      p.stroke(255); | 
 | 
    }; | 
 | 
 | 
 | 
    /** | 
 | 
     * sets the background and fill to white | 
 | 
     * and the stroke to blue | 
 | 
     **/ | 
 | 
    p.mouseReleased = function() { | 
 | 
      p.background(255); | 
 | 
      p.fill(255); | 
 | 
      p.stroke(0, 0, 255); | 
 | 
    }; | 
 | 
 | 
 | 
    /** | 
 | 
     * Draws circles that change diameter based on mouse speed | 
 | 
     **/ | 
 | 
    p.draw = function() { | 
 | 
      var diameter; | 
 | 
      diameter = p.pow(p.dist(p.pmouseX, p.mouseY, p.mouseX, p.mouseY), 1.5); | 
 | 
      p.ellipse(p.mouseX, p.mouseY, diameter, diameter); | 
 | 
    }; | 
 | 
  }; // end constructor | 
 | 
};// end GetStarted2 | 
 | 
 | 
 | 
/** | 
 | 
 * Builds the GetStarted2 sketch | 
 | 
 * | 
 | 
 * p5 thinks it's getting a function, not a class       | 
 | 
 * so it doesn't use the `new` statement. This function | 
 | 
 * works around that and passes in some parameters | 
 | 
 * | 
 | 
 * @param {object} p: a ``p5`` instance | 
 | 
 **/ | 
 | 
function build_get_started_2(p){ | 
 | 
  return new GetStarted2(p, "get_started_2", 300); | 
 | 
}; | 
 | 
 | 
 | 
var p5_retest = new p5(build_get_started_2, "get_started_2"); |