努力,成長(zhǎng),提高

          在追求中進(jìn)步
          數(shù)據(jù)加載中……
          html5 基于canvas的基礎(chǔ)類(lèi)設(shè)計(jì)
          先給大家看一個(gè)demo
          http://www.koooi.com/html5/
          代碼很簡(jiǎn)單
          頁(yè)面上面加一個(gè)<canvas style="border:1px solid" id="canvas" width="1000" height="800">
                      <p>
                          Your browser does not support the canvas element.
                      </p>
                  </canvas>
          然后javascript中寫(xiě)上
          var canvas = null;
          var ctx = null;
          var score = 0;
          var num = 51;
          function getRandomInt(a, b){
              
          return Math.floor(Math.random() * (b - a + 1)) + a;
              
          }

          window.onload 
          = init;

          function init(){
              canvas 
          = document.getElementById('canvas');
              scoreID 
          = document.getElementById('score');
              ctx 
          = canvas.getContext('2d');
              
          //    setInterval(draw, 1000 / FPS);
              
              controller 
          = new ERIC.CanvasController(ctx, canvas.width, canvas.height);
              controller.animateStopBySignal();
              canvas.onclick 
          = function(e){
                  
          var mousex = e.clientX;
                  
          var mousey = e.clientY;
                  
          var relativex = mousex - canvas.offsetLeft;
                  
          var relativey = mousey - canvas.offsetTop;
                  
          var len = controller.canvasObjectList.length;
                  
          var infig = false;
                  
          for (i = len - 1; i >= 0; i--) {
                      
          if (controller.canvasObjectList[i].isInFigure(relativex, relativey)) {
                          score 
          = score + 10;
                          infig 
          = true;
                          controller.canvasObjectList[i].removeFromControl();
                      }
                  }
                  
          if (!infig) {
                      score 
          = score - 10;
                  }
                  scoreID.innerHTML 
          = score;
              }
              
              ERIC.run(
          function test(){
                  
          var t = getRandomInt(00);
                  
          if (t == 0) {
                      num
          --;
                      
          if(num==0){
                          ERIC.stop();
                          
          return;
                      }
                      
          var cir1 = new ERIC.Circle(getRandomInt(70930), getRandomInt(70730), 5);
                      cir1.setTriggerDelete(
          function(){
                          
          return this.radius >= 40;
                      });
                      cir1.setAction(
          function(){
                          
          this.radius = this.radius + 1;
                      });
                      controller.add(cir1);
                  }
              }, 
          400);
          }

          很簡(jiǎn)單的代碼,利用了我寫(xiě)的基礎(chǔ)類(lèi)ERIC.Circle Eric.CanvasController 以及ERIC.Run
          使用簡(jiǎn)介:
          1.先實(shí)例化ERIC.
          CanvasController,假設(shè)實(shí)例名字controller
          2.實(shí)例化一個(gè)ERIC.BasicFigure類(lèi)的子類(lèi)的對(duì)象,現(xiàn)在EricUtils.js只提供了一個(gè)擴(kuò)展類(lèi)Circle,假設(shè)實(shí)例名字為cir
          3.設(shè)置cir實(shí)例的動(dòng)作和刪除的條件。動(dòng)作意思是每一個(gè)動(dòng)畫(huà)要執(zhí)行什么操作,比如圓的半徑加1, 或者圓心移動(dòng)。刪除的條件比如半徑大于50就從畫(huà)布當(dāng)中刪除掉,不再顯示這個(gè)圓。
          cir1.setTriggerDelete(function(){
                          return this.radius >= 40;
                      });
                      cir1.setAction(function(){
                          this.radius = this.radius + 1;
                      });
          4.把cir添加到controller中。controller.add(cir)
          5.調(diào)用controller.animate(); 此方法會(huì)以每秒30幀來(lái)畫(huà)出cir對(duì)象,每幀結(jié)束執(zhí)行cir在第三步設(shè)置的動(dòng)作。到達(dá)刪除條件會(huì)刪除掉該object,直到?jīng)]有object在controller當(dāng)中。
          6.也可以調(diào)用controller.animateStopBySignal()方法,動(dòng)作和5相同,但是會(huì)一直進(jìn)行渲染,這樣適合于臨時(shí)添加object到controller當(dāng)中,添加進(jìn)去以后馬上就可以被渲染,直到滿(mǎn)足被刪除的條件。渲染結(jié)束需要調(diào)用controller.signalStop()

          基礎(chǔ)類(lèi)下載地址http://www.koooi.com/html5/js/EricUtils.js
          當(dāng)然,這只是一個(gè)框架,以后要添加更多的功能,如果您對(duì)于html5有興趣,打算和我一起來(lái)開(kāi)發(fā),歡迎聯(lián)系我
          希望可以起到拋磚引玉的作用。
          QQ627四23四四三

          posted on 2010-06-13 02:07 孔陽(yáng) 閱讀(1940) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 山东| 恩平市| 建宁县| 邢台市| 金沙县| 嘉荫县| 牡丹江市| 滦南县| 方城县| 汪清县| 南昌县| 大姚县| 习水县| 江川县| 镇雄县| 洞口县| 旬邑县| 延津县| 儋州市| 建瓯市| 衡水市| 绥江县| 南阳市| 芷江| 兴宁市| 宁河县| 得荣县| 栾川县| 岐山县| 青冈县| 河池市| 保亭| 扬中市| 随州市| 仁布县| 合阳县| 赞皇县| 枣强县| 天祝| 柞水县| 武功县|