topical media & game development

talk show tell print

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



  <!DOCTYPE html>
  <html>
  <head>
      <title>Transform</title>
  
          <link href="mobile-graphic-easel-examples-assets-demoStyles.css" rel="stylesheet" type="text/css" />
          
          
          <script>
                  // this sets the namespace for CreateJS to the window object, so you can instantiate objects without specifying 
                  // the namespace: "new Graphics()" instead of "new createjs.Graphics()"
          </script>
          
      <script src="./mobile-graphic-easel-examples-assets-preloadjs-0.3.0.min.js"></script>
  
          <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-utils-Ticker.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Text.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-filters-Filter.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-display-Bitmap.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-filters-ColorMatrix.js"></script>
          <script type="text/javascript" src="mobile-graphic-easel-src-easeljs-filters-ColorMatrixFilter.js"></script>
  
          <!-- We also provide hosted minified versions of all CreateJS libraries.
            http://code.createjs.com -->
  
      <link type="text/css" href="./mobile-graphic-easel-examples-assets-css-darkhive-jquery-ui-1.8.18.custom.css" rel="stylesheet" />
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
      <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
  
      <script type="text/javascript">
          var manifest;
          var stage;
          var canvas;
          var imageContainer;
          var images;
          var loader;
          var image_width;
          var image_height;
  
          function init() {
                  if (window.top != window) {
                          document.getElementById("header").style.display = "none";
                  }
  
                  document.getElementById("loader").className = "loader";
  
             canvas = document.getElementById('testCanvas');
             stage = new createjs.Stage(canvas);
             imageContainer = new createjs.Container();
  
             images = [];
  
             image_width = 149;
             image_height = 370;
  
              $(".transformSlider").slider({
                  value: 0,
                  min: -30,
                  max: 30,
                  step: 1,
                  slide:handleChange,
                  change:handleChange
              });
  
              manifest = [
                  {src:"./mobile-graphic-easel-examples-assets-image_1_1.png", id:"image0"},
                  {src:"./mobile-graphic-easel-examples-assets-image_1_2.png", id:"image1"},
                  {src:"./mobile-graphic-easel-examples-assets-image_1_3.png", id:"image2"},
                  {src:"./mobile-graphic-easel-examples-assets-image_1_4.png", id:"image3"}
  
              ];
  
              loader = new createjs.LoadQueue(false);
              loader.onProgress = handleProgress;
              loader.onComplete = handleComplete;
              loader.onFileLoad = handleFileLoad;
              loader.loadManifest(manifest);
  
              stage.addChild(imageContainer);
              createjs.Ticker.addEventListener("tick", tick);
          }
  
          function stop() {
                  createjs.Ticker.removeEventListener("tick", tick);
          }
  
          function handleProgress() {
              //console.log('enter')
          }
  
          function handleFileLoad(event) {
              images.push(event.item);
          }
  
          function handleComplete() {
                  document.getElementById("loader").className = "";
              var l = images.length;
              for(var i=0;i<l;i++) {
                  var id = images[i].id;
                  var bmp = new createjs.Bitmap(loader.getResult(id));
                  imageContainer.addChild(bmp);
              }
  
              displayImages();
          }
  
          function displayImages() {
              var l = images.length;
              for(var i=0;i<l;i++) {
                  var bmp = imageContainer.getChildAt(i);
                  bmp.cache(0,0, image_width, image_height);
                  bmp.x = (image_width) * i;
                  bmp.snapToPixel = true;
              }
  
              imageContainer.x = canvas.width - (image_width*l) >> 1;
              imageContainer.y = canvas.height - image_height >> 1;
  
              stage.update();
          }
  
          function show(value) {
  
          }
  
          function handleChange() {
              var value = this.slider("option", "value");
              $( "#amount" ).text("Amount:"+value);
              if (value == 0) { return; }
              var l = images.length;
              for(var i=0;i<l;i++) {
                  var bmp1 = imageContainer.getChildAt(i);
  
                  if (i%2) {
                      bmp1.skewY = value;
                  } else {
                      bmp1.skewY = -1*value;
                      bmp1.y = -(150) * Math.sin(bmp1.skewY/180*Math.PI)
                  }
  
                  bmp1.x = ((image_width - 1)*i) * Math.cos(bmp1.skewY/180*Math.PI);
                  bmp1.filters = [getColorMatrixFilter(bmp1.skewY)];
                  bmp1.snapToPixel = true;
                  bmp1.updateCache();
              }
  
              var _scale = (value > 0) ? 1/value * 20 : -1*(1/value * 20);
              imageContainer.rotation = (value > 0) ? value>>1 : - 1*value>>1;
              imageContainer.scaleX = imageContainer.scaleY = (_scale <= 1) ? _scale : 1;
  
              imageContainer.x = canvas.width - (image_width*l) >> 1;
              imageContainer.y = canvas.height - image_height >> 1;
  
              stage.update();
          }
  
          function getColorMatrixFilter(value) {
              var cm = new createjs.ColorMatrix();
              cm.adjustBrightness(value*0.75);
              return new createjs.ColorMatrixFilter(cm);
          }
  
          function tick(event) {
              stage.update(event);
          }
  
      </script>
  
          <link rel="stylesheet" href="mobile-graphic-easel-examples-assets-demoStyles.css"/>
  
          <style type="text/css">
          #slider {
                  width:100px;
              left: 830px;
                  top: 350px;
          }
                  LABEL {
                          position: absolute;
                          left: 830px;
                          top: 330px;
                          width: 100px;
                  }
  
          </style>
  
  </head>
  <body onload="init()">
  
          <div id="loader"></div>
  
          <header id="header" class="EaselJS">
              <h1><span class="text-product">Easel<strong>JS</strong></span> Transformation</h1>
              <p>This sample shows transformations, including skews. Drag the slider to affect the skew amount.</p>
          </header>
  
          <div width="960" height="400" style="position:absolute; ">
              <div id="slider" class="transformSlider"></div>
                  <label id="amount" style="color:#777">Amount</label>
          </div>
          <canvas id="testCanvas" 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.