-
Probleme de POO
Bonjour,
je débute avec Flash mais surtout avec la programmation orientée objet.
Je voudrais créer un pong (vous savez le vieux jeux avec 2 raquettes et une balle) et je voudrais savoir si mes deux raquettes sont bien un seul objet avec deux nom d'occurances différents.
Mais je ne sais pas comment après dans mon code je différencie les deux raquettes (pour que l'une change de couleur lorsque la balle la touche par exemple).
Je vous remercie ;)
-
bonjour,
exactement comme dans un langage objet "classique" le clip dans la bibliothèque représente une Classe tandis que le clip sur la scène représente une instance, un objet avec son nom propre genre "raquette_gauche" "raquette_droite". Si tu modifies (modification statique) un clip l'autre sera modifié de la même manière. par contre si le clip à une propriété particulière comme changer de couleur au contact d'un autre clip (la balle par exemple) seul le clip concerné réagira indépendamment de l'autre (comportement dynamique).
voilà j'espère avoir été assez clair?
crdlt
-
Merci d'avoir répondu,
pour tout te dire je n'ai pas tout compris, comment fais tu pour choisir entre un comportement dynamique et statique ?
Pourrais tu me donner un petit exemple ?
Merci encore
Q
-
J'ai peut être utilisé des termes compliqués pour pas grand chose. Par exemple ta raquette et un rectangle blanc, une méthode changeCouleur() fait changer la couleur du rectangle. Ce sont des propriétés statiques. Pendant l'animation si la balle touche une raquette on appelle la méthode changeCouleur() c'est le comportement dynamique. La balle va se déplacer de gauche à droite (et inversement) quand la balle touche la raquette gauche (par exemple) on execute raquette_gauche.changeCouleur() et seule la raquette gauche change de couleur.
Par contre si tu fais évoluer ton programme, tu édites le clip raquette et tu remplaces le rectangle par le dessin d'une raquette. A ce moment le dessin de la raquette apparaît sur les deux raquettes alors que tu n'as besoin de faire qu'une fois la modification.
voila, voila.
crdlt
-
Salut !
"je voudrais savoir si mes deux raquettes sont bien un seul objet avec deux noms d'occurances différents."
C'est toi qui voit:
Soit tu crées un clip raquette (par du code) ,tu ajoutes une propriete à ton prtotype qui definit la couleur de la raquette.
Lorsque la balle touche la raquette, tu modifies la prpriete responsable de la couleur de la raquette, et là tes 2 raquettes auront une couleur differente.
Soit tu crées 2 clips dans la bibliotheques, contenant 2 images-cles chacun, la premiere etant la raquette 'normale' et la deuxieme , la raquette 'colorée' et lorsque la balle touche une de ces 2 raquettes tu lis la 2e image-cle du clip raquette dont il est question.
Je te recommande cependant la premiere facon (par du code) meilleures en tout points ;) si ce n'est qu'elle peut paraitre plus compliquée a un debutant en Flash. (j'ai bien dit paraitre ^^).
Autre chose, je pense que quand dom_dev parle de mod statique c'est lorsque tu cliques sur le clip ds la biblio et que tu fais modifier... et que comportement dynamique fait reference a la notion d'instances gerées par du code.
;)a+
-
Merci bcp à tous les deux, je vais essayer ca dès que j'en aurais le temps
Encore merci et bonne continuation
Q
-
Désolé, mais ca ne marche toujours pas,
en fait mon problème c'est que je n'arrive pas a avoir l'ordonnée de la ball lorsque je suis dans une raquette (je suis pas clair désolé).
Dans mon objet raquette j'ai placé ceci :
this.onEnterFrame = function() {
if(ball._y>this._y) {
this._y+=vmax;
} else if(ball._y<this._y) {
this._y-=vmax;
}
tout simplement la raquette doit essayer de suivre la balle (je suis sûr que vous aviez compris mais bon ...).
Pourriez vous me dire comment je dois faire pour obtenir ball._y dans cette partie du programme.
Merci encore
Q
-
En supposant que dans la scène principale il y ai "raquette" et "ball". Quand on est "dans" raquette pour "voir" ball il faut cibler de cette façon.
Code:
1 2
|
_parent.ball.propriete; |
c'est assez logique raquette ne connait pas ses "voisins".
-
Ah oui bien sûr.
C'est bon ça marche.
Merci beaucoup !