1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
....................
var cache_alien = null;
// Cette fonction permet de réinitialiser notre canvas. Plus rien n'y est affiché.
function efface_alien (alien) {
context.clearRect(alien.x, alien.y, 11*unit, 8*unit);
}
// Pour chaque alien connu
function animate_aliens () {
var leader = alien_le_plus_bas();
var dispa = false;
for ( var i = 0, e = aliens.length; i < e; ++i ) {
dispa = animate_alien(aliens[i], leader) || dispa;
}
if (dispa) {
efface_alien(cache_alien);
}
animate_alien(aliens[i], leader);
}
// L'alien que l'on anime
function animate_alien (alien, leader) {
//var clic_jeu = gere_clic();
var cache_jeu = false;
if ( alien == null || typeof alien != "object" ) {
alert("animate_alien : alien n'est pas un objet");
return;
}
efface_alien(alien);
alien.y += alien.vitesse*unit;
if (cache_alien) {
alien.y = 0;
cache_jeu = true;
alien.vitesse = vitesse_aleatoire();
}
affiche_alien(alien, leader);
return cache_jeu;
}
// Gère clic
function gere_clic (e) {
var i, alien;
// "this" est l'élément html sur lequel on clique, ici le canvas
var box = this.getBoundingClientRect();
// e est l'événement généré par le clic
var x_clic = e.clientX - box.left;
var y_clic = e.clientY - box.top;
for (i = 0; i < aliens.length; i++) {
alien = aliens[i];
if ((x_clic >= alien.x) && (x_clic <= (alien.x + 11*unit)) && (y_clic >= alien.y)
&& (y_clic <= (alien.y + 8*unit))) {
efface_alien(alien[i]);
aliens[i].y = 0;
efface_alien(aliens[i]);
}
}
}
// Fonction d'initialisation
function initialisations () {
...............
setInterval('animate_aliens();', 200);
cache_alien = canvas.addEventListener('click', gere_clic, false);
} |
Partager