先給大家看一個demo
http://www.koooi.com/html5/
代碼很簡單
頁面上面加一個<canvas style="border:1px solid" id="canvas" width="1000" height="800">
<p>
Your browser does not support the canvas element.
</p>
</canvas>
然后javascript中寫上
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(0, 0);
if (t == 0) {
num--;
if(num==0){
ERIC.stop();
return;
}
var cir1 = new ERIC.Circle(getRandomInt(70, 930), getRandomInt(70, 730), 5);
cir1.setTriggerDelete(function(){
return this.radius >= 40;
});
cir1.setAction(function(){
this.radius = this.radius + 1;
});
controller.add(cir1);
}
}, 400);
}
很簡單的代碼,利用了我寫的基礎(chǔ)類ERIC.Circle Eric.
CanvasController 以及ERIC.Run
使用簡介:
1.先實例化ERIC.CanvasController,假設(shè)實例名字controller
2.實例化一個ERIC.BasicFigure類的子類的對象,現(xiàn)在EricUtils.js只提供了一個擴展類Circle,假設(shè)實例名字為cir
3.設(shè)置cir實例的動作和刪除的條件。動作意思是每一個動畫要執(zhí)行什么操作,比如圓的半徑加1, 或者圓心移動。刪除的條件比如半徑大于50就從畫布當(dāng)中刪除掉,不再顯示這個圓。
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(); 此方法會以每秒30幀來畫出cir對象,每幀結(jié)束執(zhí)行cir在第三步設(shè)置的動作。到達(dá)刪除條件會刪除掉該object,直到?jīng)]有object在controller當(dāng)中。
6.也可以調(diào)用controller.animateStopBySignal()方法,動作和5相同,但是會一直進(jìn)行渲染,這樣適合于臨時添加object到controller當(dāng)中,添加進(jìn)去以后馬上就可以被渲染,直到滿足被刪除的條件。渲染結(jié)束需要調(diào)用controller.signalStop()
基礎(chǔ)類下載地址http://www.koooi.com/html5/js/EricUtils.js
當(dāng)然,這只是一個框架,以后要添加更多的功能,如果您對于html5有興趣,打算和我一起來開發(fā),歡迎聯(lián)系我
希望可以起到拋磚引玉的作用。
QQ627四23四四三