Vérifier qu'un objet peut être enlevé d'un tableau
Bonjour à toute la communauté,
J'ai défini par un constructeur un objet Aliment() qui représente, à chaque fois qu'il est appelé, un aliment différent.
Tous mes Aliment() sont référencés dans un tableau qui s'appelle TableauAliments.
Le but de mon jeu, c'est de faire rattraper ces aliments, qui tombent (leur position y est incrémentée), par un personnage contrôlable.
Voici donc mon code, dans une fonction Chronometre() qui est appelé très régulièrement :
Code:
1 2 3 4 5 6 7 8
| function Chronometre() {
for (var i = 0, l = TableauAliments.length; i < l; i++) {
if (TableauAliments[i].peutEtreEnleve) { TableauAliments.splice(i, 1); }
TableauAliments[i].modifierPosition();
TableauAliments[i].gererCollisions();
TableauAliments[i].alimentNonRattrape();
}
} |
Dans le même temps, voici respectivement ce qui me sert à faire chuter l'aliment, gérer la collision avec le personnage ou supprimer l'aliment non rattrapé.
Code:
1 2 3
| Aliment.prototype.modifierPosition = function() {
this.image.y += difficulteJeu;
} |
Code:
1 2 3 4 5 6 7
| Aliment.prototype.alimentNonRattrape = function() {
if (this.image.y == 504) {
niveauJeu.removeChild(this.image);
niveauJeu.update();
this.peutEtreEnleve = true;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11
| Aliment.prototype.gererCollisions = function() {
if (! (positionXPersonnage > this.image.x + dimensionsWidth
|| positionYPersonnage < this.image.x - 42
|| positionXPersonnage > this.image.y + dimensionsHeight
|| positionYPersonnage < this.image.x - 54)) {
nombreAlimentsRecuperes += 1;
niveauJeu.removeChild(this.image);
niveauJeu.update();
this.peutEtreEnleve = true;
}
} |
J'aimerais qu'un aliment, s'il n'est pas rattrapé ou s'il entre en collision avec le personnage, soit supprimé du tableau. J'ai donc un this.peutEtreEnleve = true; qui doit permettre à l'élément d'être supprimé grâce à if (TableauAliments[i].peutEtreEnleve) { TableauAliments.splice(i, 1); } mais cela ne fonctionne pas.
Quelqu'un peut-il m'expliquer pourquoi la console me dit que TableauAliments[i].peutEtreEnleve n'est pas défini ?
En vous remerciant.