Online Book Reader

Home Category

HTML5 Canvas [141]

By Root 6493 0
{

missiles.splice(i,1);

}

}

//Move Aliens

for (var i=aliens.length−1; i>= 0;i−−) {

aliens[i].x += aliens[i].speed;

if (aliens[i].x > (theCanvas.width-aliens[i].width) || aliens[i].x < 0) {

aliens[i].speed *= -1;

aliens[i].y += 20;

}

if (aliens[i].y > theCanvas.height) {

aliens.splice(i,1);

}

}

//Detect Collisions

missile: for (var i=missiles.length−1; i>= 0;i−−) {

var tempMissile = missiles[i]

for (var j=aliens.length−1; j>= 0;j−−) {

var tempAlien =aliens[j];

if (hitTest(tempMissile,tempAlien)) {

playSound(SOUND_EXPLODE,.5);

missiles.splice(i,1);

aliens.splice(j,1);

break missile;

}

}

if (aliens.length <=0) {

appState = STATE_RESET;

}

}

//Background

context.fillStyle = "#000000";

context.fillRect(0, 0, theCanvas.width, theCanvas.height);

//Box

context.strokeStyle = "#EEEEEE";

context.strokeRect(5, 5, theCanvas.width−10, theCanvas.height−10);

//Draw Player

context.drawImage(playerImage,player.x,player.y);

//Draw Missiles

for (var i=missiles.length−1; i>= 0;i−−) {

context.drawImage(missileImage,missiles[i].x,missiles[i].y);

}

//draw aliens

for (var i=aliens.length−1; i>= 0;i−−) {

context.drawImage(alienImage,aliens[i].x,aliens[i].y);

}

//Draw Text

context.fillStyle = "#FFFFFF";

context.fillText ("Active Sounds: " + soundPool.length, 200 ,480);

}

function hitTest(image1,image2) {

r1left = image1.x;

r1top = image1.y;

r1right = image1.x + image1.width;

r1bottom = image1.y + image1.height;

r2left = image2.x;

r2top = image2.y;

r2right = image2.x + image2.width;

r2bottom = image2.y + image2.height;

retval = false;

if ( (r1left > r2right) || (r1right < r2left) || (r1bottom < r2top) ||

(r1top > r2bottom) ) {

retval = false;

} else {

retval = true;

}

return retval;

}

function eventMouseMove(event) {

if ( event.layerX || event.layerX == 0) { // Firefox

mouseX = event.layerX ;

mouseY = event.layerY;

} else if (event.offsetX || event.offsetX == 0) { // Opera

mouseX = event.offsetX;

mouseY = event.offsetY;

}

player.x = mouseX;

player.y = mouseY;

}

function eventMouseUp(event) {

missiles.push({speed:5, x: player.x+.5*playerImage.width,

y:player.y-missileImage.height,width:missileImage.width,

height:missileImage.height});

playSound(SOUND_SHOOT,.5);

}

function playSound(sound,volume) {

var soundFound = false;

var soundIndex = 0;

var tempSound;

if (soundPool.length> 0) {

while (!soundFound && soundIndex < soundPool.length) {

var tSound = soundPool[soundIndex];

if ((tSound.element.ended || !tSound.played) && tSound.name == sound) {

soundFound = true;

tSound.played = true;

} else {

soundIndex++;

}

}

}

if (soundFound) {

tempSound = soundPool[soundIndex].element;

tempSound.volume = volume;

tempSound.play();

} else if (soundPool.length < MAX_SOUNDS){

tempSound = document.createElement("audio");

tempSound.setAttribute("src", sound + "." + audioType);

tempSound.volume = volume;

tempSound.play();

soundPool.push({name:sound, element:tempSound, type:audioType, played:true});

}

}

function run() {

switch(appState) {

case STATE_INIT:

initApp();

break;

case STATE_LOADING:

//wait for call backs

break;

case STATE_RESET:

resetApp();

break;

case STATE_PLAYING:

drawScreen();

break;

}

}

theCanvas.addEventListener("mouseup",eventMouseUp, false);

theCanvas.addEventListener("mousemove",eventMouseMove, false);

setInterval(run, 33);

}

Your browser does not support HTML5 Canvas.

What’s Next

Since this is not a book about the HTML5

Return Main Page Previous Page Next Page

®Online Book Reader