topical media & game development

talk show tell print

mobile-graphic-easel-examples-GraphicsReuse.htm / htm



  <!DOCTYPE html>
  <html>
  <head>
          <title>EaselJS: Reusing Graphics</title>
  
          <link href="mobile-graphic-easel-examples-assets-demoStyles.css" rel="stylesheet" type="text/css" />
  
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-utils-UID.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-geom-Matrix2D.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-events-EventDispatcher.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-DisplayObject.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Container.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Stage.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-events-MouseEvent.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Shape.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Graphics.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-geom-Point.js"></script>
  
          <!-- We also provide hosted minified versions of all CreateJS libraries.
            http://code.createjs.com -->
  
          <script type="text/javascript">
          var canvas;
          var stage;
          var headRadius;
          var g;
  
          function init() {
                  if (window.top != window) {
                          document.getElementById("header").style.display = "none";
                  }
  
              canvas = document.getElementById('myCanvas');
              width = canvas.width;
              height = canvas.height;
              stage = new createjs.Stage(canvas);
  
              layoutSmiley();
  
              stage.onMouseDown = handlePress;
              stage.update();
  
          }
  
          function layoutSmiley() {
              drawSmiley(createjs.Graphics.getRGB(Math.random()*255|0,Math.random()*255|0,Math.random()*255|0), createjs.Graphics.getRGB(Math.random()*255|0,Math.random()*255|0,Math.random()*255|0));
              for(var i=0;i<100;i++) {
                  var shape = new createjs.Shape(g);
                  shape.scaleX = shape.scaleY = Math.random() * 0.05 + 0.15;
                  shape.x = Math.random()*(960 - (350 * shape.scaleX));
                  shape.y = Math.random()*(400 - (350 * shape.scaleX));
                  shape.rotation = (Math.random()*90)-45;
                  stage.addChild(shape);
              }
  
              stage.update();
          }
  
          function handlePress() {
              stage.removeAllChildren();
                  layoutSmiley();
          }
  
          function drawSmiley(fillColor, lineColor) {
                  var Point = createjs.Point; // temporary shortcut to the class
              g = new createjs.Graphics();
              var pt1 = new Point(138, 300);
              var pt2 = new Point(309, 310);
              var pt3 = new Point(337, 170);
              var pt4 = new Point(360, 170);
              var pt5 = new Point(374, 234);
              var pt6 = new Point(388, 220);
              var pt7 = new Point(75, 240);
              var pt8 = new Point(63, 230);
              var pt9 = new Point(100, 178);
              var pt10 = new Point(115, 181);
  
              //Left Eye
              var pt11 = new Point(169, 119);
              var pt12 = new Point(198, 115);
              var pt13 = new Point(175, 153);
              var pt14 = new Point(205, 148);
  
              var pt11a = new Point(169, 105);
              var pt12a = new Point(188, 100);
              var pt13a = new Point(183, 173);
              var pt14a = new Point(205, 169);
  
              //Right Eye
              var pt15 = new Point(251, 109);
              var pt16 = new Point(279, 115);
              var pt17 = new Point(244, 148);
              var pt18 = new Point(273, 152);
              var pt15a = new Point(261, 97);
              var pt16a = new Point(272, 99);
              var pt17a = new Point(249, 166);
              var pt18a = new Point(263, 168);
  
              //Head
              g.setStrokeStyle(20);
              g.beginStroke(lineColor);
              g.beginFill(fillColor);
              g.drawCircle(225, 223, 200);
              g.endFill();
  
              //Left Eye
              g.setStrokeStyle(1, 'round', 'round');
              g.beginStroke(lineColor);
              g.beginFill(lineColor);
              g.moveTo(169,119);
              g.lineTo(175,153);
              g.bezierCurveTo(pt13a.x, pt13a.y, pt14a.x, pt14a.y, 205, 148);
              g.lineTo(198,115);
              g.bezierCurveTo(pt12a.x, pt12a.y, pt11a.x, pt11a.y, 169, 119);
              g.endFill();
  
              //Right Eye
              g.setStrokeStyle(1, 'round', 'round');
              g.beginFill(lineColor);
              g.beginStroke(lineColor);
              g.moveTo(251,109);
              g.lineTo(244, 148);
              g.bezierCurveTo(pt17a.x, pt17a.y, pt18a.x, pt18a.y, 273, 152);
              g.lineTo(279, 115);
              g.bezierCurveTo(pt16a.x, pt16a.y, pt15a.x, pt15a.y, 251, 109);
              g.endFill();
  
              //Mouth
              g.setStrokeStyle(1, 'round', 'round');
              g.beginStroke(lineColor);
              g.beginFill(lineColor);
              g.moveTo(100, 210);
              g.bezierCurveTo(pt1.x, pt1.y, pt2.x, pt2.y, 351, 205);
              g.lineTo(340, 187);
              g.bezierCurveTo(pt3.x, pt3.y, pt4.x, pt4.y, 360, 178);
              g.lineTo(383, 210);
              g.bezierCurveTo(pt6.x, pt6.y, pt5.x, pt5.y, 365, 222);
              g.bezierCurveTo(pt2.x-30, pt2.y+50, pt1.x+30, pt1.y+50, 90, 228);
              g.bezierCurveTo(pt7.x, pt7.y, pt8.x, pt8.y, 73, 210);
              g.lineTo(93, 182);
              g.bezierCurveTo(pt9.x, pt9.y, pt10.x, pt10.y, 109, 197);
              g.lineTo(100, 210);
              g.endFill();
          }
  
          </script>
  
  </head>
  <body onload="init()">
  
          <header id="header" class="EaselJS">
              <h1><span class="text-product">Easel<strong>JS</strong></span> Graphics Re-use</h1>
              <p>This example shows how a single <strong>Graphics</strong> object can be reused between multiple <strong>Shape</strong> instances.
                      Click to redraw.</p>
          </header>
  
          <canvas id="myCanvas" width="960" height="400"></canvas>
  
  </body>
  </html>


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.