danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006
-
29 déc. 2005 à 00:12
danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006
-
5 janv. 2006 à 17:16
Bonjour à tous ! Je suis nouveau et j'ai un problème avec un jeu que je veux créer. Le but de ce jeu est d'éviter que des balles rouges (qui rebondissent un peu partout) et que des balles poursuivantes touchent la balle verte qui suis notre souris. Pour les balles poursuivantes, sa va, mais pour les balles rouges, sa va moins bien. Mon problème est que, si j'ai deux balles rouges sur la scène, une dans le centre et l'autre près du mur droit, lorsque la balle près du mur droit touchera ce dernier, sa vitesse en x sera multipliée par -1, mais celle du centre aussi ! Alors toutes les balles bougent pareilles, elles vont toutes à un endroit en même temps et dans la même direction. C'est comme si toutes les balles ensembles en formaient une seule... J'ai alors essayé de mettre une variable de vitesse unique pour chaque balles, mais je ne sais pas si j'ai bien réussi. Voici le code :
//ici on déclare quelques variables//
//pour que chaque balle ait sa propre vitesse, j'ai déclaré un array (j'ai mis la valeur 10 seulement pour tester)
var balle_rouge_vitesse_x = new Array(10);
var balle_rouge_vitesse_y = new Array(10);
var balle_rouge_nombre = 0;
var balle_rouge_rayon = _root.balle_rouge._width/2;
//la variable nombre_balle_total sers pour la profondeur lorsqu'on crée les balles
var nombre_balle_total = 0;
//fonction qui crée les balles rouges//
function creer_balle_rouge() {
balle_rouge_nombre++;
nombre_balle_total++;
this.attachMovie("balle_rouge", "balle_rouge"+"_"+balle_rouge_nombre, nombre_balle_total);
//on place les balles rouges au hasard sur la scène
this["balle_rouge"+"_"+balle_rouge_nombre]._x = random(520)+15;
this["balle_rouge"+"_"+balle_rouge_nombre]._y = random(370)+15;
//ici on règle la vitesse des balles rouges
balle_rouge_vitesse_x[balle_rouge_nombre] = 2;
balle_rouge_vitesse_y[balle_rouge_nombre] = 2;
//toujours dans la fonction, on met le monvement des balles rouges
this["balle_rouge"+"_"+balle_rouge_nombre].onEnterFrame = function() {
if ((this._x-balle_rouge_rayon)<0) {
balle_rouge_vitesse_x[balle_rouge_nombre] *= -1;
}
if ((this._x+balle_rouge_rayon)>550) {
balle_rouge_vitesse_x[balle_rouge_nombre] *= -1;
}
if ((this._y-balle_rouge_rayon)<0) {
balle_rouge_vitesse_y[balle_rouge_nombre] *= -1;
}
if ((this._y+balle_rouge_rayon)>400) {
balle_rouge_vitesse_y[balle_rouge_nombre] *= -1;
}
this._x += balle_rouge_vitesse_x[balle_rouge_nombre];
this._y += balle_rouge_vitesse_y[balle_rouge_nombre];
};
Voilà ! J'espère que vous pourrez m'aider à résoudre mon problème.
balle_rouge_rayon est déclaré sur la scène principale je crois...
Alors que là, tu l'utilise comme si elle était déclaré dans une occurence d'une balle rouge...
de même pour balle_rouge_nombre
problèmes de cibles, problèmes de cibles, problèmes de cibles
à l'intérieur du onEnterFrame tu utilises encore "balle_rouge_nombre",
or celui-ci est incrémenté à chaque boucle...donc du coup toutes les
balles créées vont avoir le même comportement que la dernière!
danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006 29 déc. 2005 à 04:14
bali, je ne crois pas que ce soit un problème de cible.
balle_rouge_nombre est déclaré sur la scène principale et je l'utilise
sur la scène principale.
goldenboy, en remplaçant balle_rouge_nombre par this.varNombre, sa
revient à la même chose, tu ne fais que changer le nom de la variable,
sa ne règle pas le problème. J'ai remplacé tous les
balle_rouge_nombre par this.varNombre dans les [ ].
Si vous avez d'autres sugestions...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bali_balo
Messages postés1378Date d'inscriptionsamedi 9 octobre 2004StatutMembreDernière intervention 1 novembre 20101 29 déc. 2005 à 12:12
>>>à l'intérieur du onEnterFrame tu utilises encore "balle_rouge_nombre", or celui-ci est incrémenté à chaque boucle...donc du coup toutes les balles créées vont avoir le même comportement que la dernière!
Jle savais que c'était ça!!!
zut, jle voyé mé g laissé tonB, il était "00:59:20" et jaV trop mal à la dent...
danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006 2 janv. 2006 à 04:28
Merci pour ces réponses, mais maintenant j'ai de nouvaux problèmes !
Je voudrais maintenant faire en sorte qu'une balle rouge apparaisse
toute les x secondes. J'essaye depuis quelques temps avec ceci :
setInterval(creer_balle_rouge(), 1000);
Seulement, je ne sais pas où la mettre. Si je la met dans un movie clip
et en onEnterFrame, mon animation est en 30 images/sec alors j'obtien
30 nouvelles balles à la seconde, pas facile de faire des gros
scores...
Sinon, j'ai essayer de la mettre sur la première frame de mon jeu car
il est executé qu'une seule fois, donc j'obtient juste 1 balle, mais à
la fin de la fonction creer_balle_rouge, j'ai mis un
setInterval(creer_balle_rouge(), 1000), croyant que sa fonctionnerait
enfin, mais j'obtient ce joli message d'erreur :
256 niveau(x) de récursion ont été dépassés dans une liste d'actions.
Il s'agit probablement d'une boucle infinie.
L'exécution d'actions a été désactivée dans cette animation.
Si quelqu'un pourrait m'aider, ça serait très gentil !
danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006 3 janv. 2006 à 01:28
Merci ça fonctionne, mais un autre problème est apparu en faisant cela
et j'ignore pourquoi et comment le règler. Le problème est lorsque je
veux supprimer toutes ces balles rouges. Avant de mettre un
setInterval, j'utilisais ce code :
//pour supprimer les balles rouges
function supprimer_balle_rouge() {
for (i= 0; i<=balle_rouge_nombre; i++) {
this["balle_rouge"+"_"+i].removeMovieClip();
balle_rouge_nombre = 0;
}
Donc si je remplace tous mes this par _root comme tu as dit pour la fonction creer_balle_rouge, j'obtient ce code :
danizooska
Messages postés9Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention26 juin 2006 3 janv. 2006 à 01:31
Désolé pour le double-post mais j'ai oublier de préciser qu'en fait les
balles arrêtent de se créer grâce au clearInterval de la fonction
supprimer_balle_rouge mais elle restent en mouvement sans se
supprimer...