Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: Prototypes et Classes AS1

Envoyé: 17 juillet 2004, 9h12 par dada


Salut,

Peut-être ta façon de faire n'est pas très judicieuse, çà reste à vérifier ;-)
Personellement, je ne suis pas un pro des classes en AS1, au moment où je commençais à les comprendre, je suis passé à l'AS2 :) mais j'ai quand même fait un gros truc en AS1 et je te conseille d'utiliser les prototypes pour construire tes classes, c'est comme çà que çà se fait en AS1. Et le fonctionnement n'en est que plus puissant.

Quand tu construit une classe avec la commande 'new' tu peux passer à cette classe le nom d'ocurence d'une autre classe pour qu'elle puisse y accéder, comme j'ai fait avec la classe PERSO et le 'param_OccMap', nom d'occurence de la classe MAP. J'aurais aussi pu le faire dans la classe MONDE : plutôt que d'y construire directement lePerso et laMap, on pourrait les construire à l'extérieur de la classe et passer les noms d'occurence à MONDE dans le constructeur. Cà permettrait peut-être plus de facilités, ce sera à toi de voir ;-)

Donc, voilà un petit exemple qui construit 3 classes : MONDE, MAP et PERSO. On construit MONDE, qui construit (en son sein) MAP et PERSO. PERSO peut ramasser un objet et le garder dans sa poche, du coup MAP perd un objet. On peut récupérer le nombre d'objets avec les fonctions GetNobjets de MAP et PERSO.

----------------------------------
// =déclaration============== classe MAP ================= //
MAP = function (param_Nobjets) { // Constructeur
this.Nobjets= param_Nobjets; // on initialise le Nbr d'objets dans la Map
}
// -- ENLEVER OBJET -- //
MAP.prototype.EnleverObjet = function () { // fonction
this.Nobjets-= 1;
}
MAP.prototype.GetNobjets = function () { // fonction
return this.Nobjets; // on retourne le nombre d'objets restant dans la map
}

// =déclaration=============== classe PERSONNAGE ================ //
PERSO = function (param_OccMap) { // Constructeur
this.OccMap= param_OccMap; // OccMap est la référence à l'occurence de la classe Map
// maintenant qu'on l'a passée en paramètre et enregistrée dans l'occ Perso, on peut
// y accéder.
this.Nobjets= 0; // on initialise le Nbr d'objets pour le perso
}
// -- PRENDRE OBJET -- //
PERSO.prototype.PrendreObjet = function () { // fonction
trace ('\r---> le personnage prend un objet\r');
this.Nobjets+= 1; // le personnage gagne un objet
this.OccMap.EnleverObjet(); // la map perd un objet
}
PERSO.prototype.GetNobjets = function () { // fonction
return this.Nobjets; // on retourne le nombre d'objets dans les poches du personnage
}

// =déclaration================= classe MONDE ================= //
MONDE = function (param_Nobjets) { // Constructeur
this.laMap= new MAP (param_Nobjets); // Création de l'occurence de la Map
this.lePerso= new PERSO (this.laMap); // Création de l'occurence du perso
}

// =Création de l'occurence =======MONDE============ //
leMonde= new MONDE (10);

// =Exécution du code=
trace ('Objets restants dans la map : '+leMonde.laMap.GetNobjets());
trace ('Objets dans les poches du perso : '+leMonde.lePerso.GetNobjets());
leMonde.lePerso.PrendreObjet();
trace ('Objets restants dans la map : '+leMonde.laMap.GetNobjets());
trace ('Objets dans les poches du perso : '+leMonde.lePerso.GetNobjets());
----------------------------------

Tant que les différentes occurences de classe savent où trouver les autres occurences de classe, elles peuvent être intéractives. Quand aux prototypes, je ne sais pas si tu les utilisent, c'est un moyen de créer de vraix classes (ou presque;), propres et 'étanches' au niveau des variables et des fonctions :-D

Si tu veux des précisions, n'hésite pas, je suis à fond dans les classes en ce moment ;)

++
dada


Réponses

 Aucune réponse à ce message... 
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@