[html5] 学习笔记-Canvas应用

时间:2023-03-08 20:57:21

通过使用HTML5游戏开发的引擎CreatJS,创建HTML5 Canvas上的更好交互。

1、认识CreateJS

CreateJS是一个外部库,用它可以比Canvas更方便的绘制图形。

官网:http://createjs.com/

 <html>
 <head>
     <title></title>
     <script src="easeljs-0.8.2.min.js"></script>
 </head>
 <body>
     <canvas id="canvas" width="500" height="500"></canvas>
     <script src="app.js"></script>
 </body>
 </html>

其中用到的app.js:

 var canvas;
 var stage;
 var txt;
 var count=0;
 window.onload = function() {
     canvas = document.getElementById("canvas");
     stage = new createjs.Stage(canvas);

     txt = new createjs.Text("number->","20px Arial","#ff7700");
     stage.addChild(txt);

     createjs.Ticker.setFPS(30);
     createjs.Ticker.addEventListener("tick",tick);
 }
 function tick(e){
     count++;
     txt.text="number->"+count+"!";
     stage.update();
 }

工程中添加了CreatJS中的easeljs-0.8.2.min.js。

2、使用Canvas制作炫酷的效果

 <!DOCTYPE html>
 <html>
 <head lang="en">
     <meta charset="UTF-8">
     <title></title>
     <script src="easeljs-0.8.2.min.js"></script>
 </head>
 <body>
 <canvas id="canvas" width="1000px" height="500px"></canvas>
 <script src="app.js"></script>
 </body>
 </html>

其中用到的app.js

 /**
  * Created by wwtliu on 14/8/11.
  */
 var canvas;
 var stage;
 var img = new Image();
 var sprite;

 window.onload = function(){
     canvas = document.getElementById("canvas");
     stage = new createjs.Stage(canvas);

     stage.addEventListener("stagemousedown",clickCanvas);
     stage.addEventListener("stagemousemove",moveCanvas);

     var data={
         images:["2.png"],
         frames:{width:20,height:20,regX:10,regY:10}
     }

     sprite  = new createjs.Sprite(new createjs.SpriteSheet(data));
     createjs.Ticker.setFPS(20);
     createjs.Ticker.addEventListener("tick",tick);
 }
 function tick(e){
     var t = stage.getNumChildren();
     for(var i = t-1;i>0;i--){
         var s = stage.getChildAt(i);

         s.vY +=2;
         s.vX +=1;
         s.x += s.vX;
         s.y += s.vY;

         s.scaleX = s.scaleY =s.scaleX+ s.vS;
         s.alpha += s.vA;

         if(s.alpha <= 0 || s.y >canvas.height){
             stage.removeChildAt(i);
         }
     }
     stage.update(e);
 }

 function clickCanvas(e){
     addS(Math.random()*200 + 100,stage.mouseX,stage.mouseY,2);
 }

 function moveCanvas(e){
     addS(Math.random()*2 + 1,stage.mouseX,stage.mouseY,1);
 }

 function addS(count,x,y,speed){
     for(var i = 0;i<count;i++){
         var s = sprite.clone();
         s.x = x;
         s.y = y;
         s.alpha = Math.random()*0.5 + 0.5;
         s.scaleX = s.scaleY = Math.random() +0.3;

         var a = Math.PI * 2 *Math.random();
         var v = (Math.random() - 0.5) *30 *speed;
         s.vX = Math.cos(a) *v;
         s.vY = Math.sin(a) *v;
         s.vS = (Math.random() - 0.5) *0.2; // scale
         s.vA = -Math.random() *0.05 -0.01; // alpha
         stage.addChild(s);
     }
 }

工程中添加了CreatJS中的easeljs-0.8.2.min.js。