Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1502 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS3 - petit jeu Flash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AS3 - petit jeu Flash

n°2235678
kerrad
Posté le 15-08-2014 à 15:39:06  profilanswer
 

Salut à tous,
 
J'essaye depuis peu de faire une petit jeu flash, et j'ai beau écumer internet à la recherche de tuto en tout genre, je me retrouve souvent en train de galérer pour les adapter à ce que je veux faire.
Là j'essaye mettre en  place une jauge de vie pour les monstres, qui diminue en fonction des coups qu'il reçoit.
Je me retrouve donc avec quelque chose comme ça :

Code :
  1. var currentLife : Number = 500
  2. var totalLife : Number = 500
  3. mc_attaque.addEventListener(MouseEvent.CLICK,sbaf);
  4. function sbaf(event:MouseEvent) {
  5. currentLife -= 20; //Décrémente la vie de 20 pts  
  6. trace (currentLife)
  7.     resizeBar(vie,currentLife,totalLife); //Actualise la barre de vie  
  8. }
  9. function resizeBar(bar:MovieClip, current:Number, total:Number){
  10. this.jauge.DisplayObject.scaleX = 100*current/total;
  11. }


(je compte ajouter de l'aléatoire ensuite, j'ai pris des valeurs simple pour commencer.)
currentLife étant la vie actuelle, et totalLife la vie total du monstre
"jauge" est le nom du MovieClip qui doit diminuer, et son occurrence à été nommée "vie".
 
La sortie me trace bien le currentLife, mais la barre ne dminu pas et je me retrouve avec :

Code :
  1. TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
  2. at Sansnom_fla::barre_de_vie_1/resizeBar()
  3. at Sansnom_fla::barre_de_vie_1/sbaf()


 
es-ce que vous sauriez où est ce que sa cloche ?

mood
Publicité
Posté le 15-08-2014 à 15:39:06  profilanswer
 

n°2235748
gustave02
Posté le 17-08-2014 à 19:06:58  profilanswer
 

ton nom n'est pas ok
"this.jauge.DisplayObject"  
ça dépend de la manière utiliser pour le créer. vérifier qui a bien était nommé dans les propriétés si tu l'as mis dans la bibliothèque. si il est contenu dans vie son chemin devrait être this.vie.jauge.scaleX
 
donc difficile de te répondre exactement sans un fla.
 
de plus scaleX  si      
                var currentLife : Number = 200;
                var totalLife : Number = 500  ;
                resizeBar(vie,200,500);
                this.jauge.scaleX = 100*(200/500); //ce qui donne resultat 40;
 scaleX ne marche qu' avec une valeur de 0 a1; si tu veux voir une diminution de ta barre scaleX de ta barre doit etre inférieur a 1 de moitié donne barre.scaleX = 0.5;

n°2236009
kerrad
Posté le 22-08-2014 à 13:06:23  profilanswer
 

Merci beaucoup pour ta réponse.
J'ai changé la formule de scaleX pour "scaleX = currentLife/totalLife;", là si j'ai 200/500, j'aurais scaleX = 0.4, ça devait mieux marcher.
 
En revanche je n'ai toujours pas compris d'où viens mon principal problème, avec le problème de nom. Tous mes movieclip possède un nom d’occurrence, et j'ai eu beau test les "this.vie.jauge..." "this.jauge.vie..." etc, ça ne fonctionnait pas.
 
J'ai mis mon fla ici si jamais tu veux y jeter un oeil : http://toutbox.fr/kerrad/barredevie,10119599.fla


Message édité par kerrad le 22-08-2014 à 13:07:50
n°2236038
abais
Posté le 22-08-2014 à 23:57:45  profilanswer
 

Tu confonds class et instance.
vie est une occurence (instance) de jauge (sa class).
 
C'est sur vie que tu dois agir, pas sur "jauge" qui est un type/class que tu peux instancier X fois (tu créer des occurrences)

Code :
  1. this.vie.scaleX = currentLife/totalLife;


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°2236045
gustave02
Posté le 23-08-2014 à 20:15:04  profilanswer
 

et oui
 

Code :
  1. var currentLife : Number = 500
  2. var totalLife : Number = 500
  3. mc_attaque.addEventListener(MouseEvent.CLICK,sbaf);
  4. function sbaf(event:MouseEvent) {
  5. currentLife -= 20; //Décrémente la vie de 20 pts  
  6. barre_pts.text = currentLife + "pts / " + totalLife + "pts";
  7.     resizeBar(vie,currentLife,totalLife); //Actualise la barre de vie
  8. }
  9. function resizeBar(bar:MovieClip, current:Number, total:Number){
  10. //this.jauge._xscale = current/total;
  11. vie.scaleX = currentLife/totalLife;
  12. }


tu as nommé ta barre vie dans l'onglet propriété
il faut donc la rapeller par se nom c'est a dire pour toi "vie".
@+ gustave02

n°2236156
kerrad
Posté le 25-08-2014 à 17:47:40  profilanswer
 

Merci tout les deux, ça marche de manière impeccable maintenant.
Il se peux que je rencontre d'autres problèmes du même genre en continuant le jeu donc je suis susceptible de le uper régulièrement :D  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS3 - petit jeu Flash

 

Sujets relatifs
Aide script flash CS6Petit problème d'alignement
changer la couleur d'un cadre de photo dans flashCréer un logiciel JAVA/FLASH + mise en ligne ?
Cherche personne expérimentée en VBS pour un petit coup de main !Petit probleme
PETITE DEMANDE : comment récupérer des données XML dans un flashgalleriesssss photos site web - Flash Photo Gallery
petit_programe en bashPetit aide sur le logiciel Visual Basic 2010
Plus de sujets relatifs à : AS3 - petit jeu Flash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR