[摘要][]; this.cellIndex = 0; this.dateCount = null; this.isActive = false; this.derection = true...
[];
this.cellIndex = 0;
this.dateCount = null;
this.isActive = false;
this.derection = true;
this.spritesheet = spritesheet;
}
controllSpriteSheetPainter.prototype = {
advance:function(){
if(this.isActive){
this.cellIndex++;
if(this.cellIndex === this.cells.length){
this.cellIndex = 0;
this.isActive = false;
}
}
},
paint:function(sprite){
if(this.dateCount===null){
this.dateCount = new Date();
}else {
var newd = new Date();
var tc = newd-this.dateCount;
if(tc>sprite.firePerFrame){
this.advance();
this.dateCount = newd;
}
}
var cell = this.cells[this.cellIndex];
ctx.drawImage(this.spritesheet , cell.x , cell.y , cell.w , cell.h , -planWidth/2 , -planHeight/2 , cell.w , cell.h);
}
}
W.planBehavior = [
{execute:function(sprite,time){
if(sprite.toTop){
sprite.top = sprite.top<planHeight/2? sprite.top : sprite.top-sprite.velocityY;
}
if(sprite.toLeft){
sprite.left = sprite.left<planWidth/2? sprite.left : sprite.left-sprite.velocityX;
}
if(sprite.toRight){
sprite.left = sprite.left>canvas.width-planWidth/2? sprite.left : sprite.left+sprite.velocityX;
}
if(sprite.toBottom){
sprite.top = sprite.top>canvas.height-planHeight/2? sprite.top : sprite.top+sprite.velocityY;
}
if(sprite.rotateLeft){
sprite.rotateAngle -= sprite.rotateSpeed;
}
if(sprite.rotateRight){
sprite.rotateAngle += sprite.rotateSpeed;
}
if(sprite.fire&&!sprite.painter.isActive){
sprite.painter.isActive = true;
this.shot(sprite);
}
},
shot:function(sprite){
this.addMissle(sprite , sprite.rotateAngle);
var missleAngle = 0.1
for(var i=1;i<sprite.fireLevel;i++){
this.addMissle(sprite , sprite.rotateAngle-i*missleAngle);
this.addMissle(sprite , sprite.rotateAngle+i*missleAngle);
}
var audio = document.getElementsByTagName("audio");
for(var i=0;i<audio.length;i++){
console.log(audio[i].paused)
if(audio[i].src.indexOf("shot")>=0&&audio[i].paused){
audio[i].play();
break;
}
}
},
addMissle:function(sprite , angle){
for(var j=0;j<missles.length;j++){
if(!missles[j].visible){
missles[j].left = sprite.left;
missles[j].top = sprite.top;
missles[j].rotateAngle = angle;
var missleSpeed = 20;
missles[j].velocityX = missleSpeed*Math.sin(-missles[j].rotateAngle);
missles[j].velocityY = missleSpeed*Math.cos(-missles[j].rotateAngle);
missles[j].visible = true;
break;
}
}
}
}
]
W.starBehavior = [
{execute:function(sprite,time){
if(sprite.top > canvas.height){
sprite.left = Math.random()*canvas.width;
sprite.top = Math.random()*canvas.height - canvas.height;
}
sprite.top += sprite.speed;
}}
]
W.starPainter = {
paint:function(sprite){
ctx.drawImage(sprite.cacheCanvas , sprite.left-sprite.width/2-sprite.lightLength , sprite.top-sprite.width/2-sprite.lightLength)
},
cache:function(sprite){
sprite.cacheCtx.save();
var opacity = 0.5,addopa = 1/sprite.lightLength;
sprite.cacheCtx.fillStyle = "rgba(255,255,255,0.8)";
sprite.cacheCtx.beginPath();
sprite.cacheCtx.arc(sprite.width/2+sprite.lightLength , sprite.width/2+sprite.lightLength , sprite.width/2 , 0 , 2*Math.PI);
sprite.cacheCtx.fill();
for(var i=1;i<=sprite.lightLength;i+=2){
opacity-=addopa;
sprite.cacheCtx.fillStyle = "rgba(255,255,255,"+opacity+")";
sprite.cacheCtx.beginPath();
sprite.cacheCtx.arc(sprite.width/2+sprite.lightLength , sprite.width/2+sprite.lightLength , sprite.width/2+i , 0 , 2*Math.PI);
sprite.cacheCtx.fill();
}
}
}
W.foodBehavior = [
{execute:function(sprite,time){
sprite.top += sprite.speed;
if(sprite.top > canvas.height+sprite.width){
sprite.visible = false;
}
}}
]
W.foodPainter = {
paint:function(sprite){
ctx.fillStyle = "rgba("+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+",1)"
ctx.font="15px 微软雅黑"
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillText(sprite.kind , sprite.left , sprite.top);
}
}
W.missleBehavior = [{
execute:function(sprite,time){
sprite.left -= sprite.velocityX;
sprite.top -= sprite.velocityY;
if(sprite.left<-missleWidth/2
关键词:运用HTML5 Canvas制作一个容易的打飞机游戏