raoultboy
Messages postés5Date d'inscriptionsamedi 2 décembre 2006StatutMembreDernière intervention 5 décembre 2006
-
2 déc. 2006 à 14:06
raoultboy
Messages postés5Date d'inscriptionsamedi 2 décembre 2006StatutMembreDernière intervention 5 décembre 2006
-
5 déc. 2006 à 15:24
Bonjour à tous et merci pour tout ce qu'on peut apprendre ici.
Je débute en poo sur as2. Et j'ai un souci pour fabriquer dynamiquement des instances d'une classes à l'intérieur d'une méthode d'une autre classe et pour les stocker dans un tableau. Je pourrais m'y prendre autrement mais ça m'économise du code et ne serais-ce que pour ma culture personelle je voudrais bien comprendre ce qui cloche. Sur as1 hors poo ce genre de truc marchait bien, mais ici rien du tout. J'ai fouillé sur le forum et sur le web, dans le Moock aussi sans résultat ou des codes trop pointus pour moi.
Le code ressemble à ça :
dans A.as :
class A {
// le tableau a remplir
private static var leTableau:Array;
// des tableaux des noms à utiliser
public var minuscules:Array = ["a", "b", "c", … "n"];
public var majuscules:Array = ["A", "B", "C", … "N"];
// initialisation
public function A() {
// le code d'initialisation
}
// la méthode en question
public function CreerInstancesDeB():Void{
for (var j = 0; j<=50; j++) {
for (var i = 0; i<=50; i++) {
var objetEnCours:Object = minuscules[j]+majuscules[i];
objetEnCours = new B(param1, param2);
leTableau.push(objetEnCours);
}
}
}
trace(leTableau);
}
et dans le swf j'appelle :
leA = new A();
leA.CreerInstancesDeB();
Il m'appelle bien la fonction constructeur de B n fois (j'ai mis un trace() pour valider), avec les bon paramètres et tout, mais quand j'essaye d'invoquer trace() sur "objetEnCours" j'ai : "undefined", et quand à la fin de la fonction je trace "leTableau" j'ai aussi "undefined". Donc je m'y prends mal ! J'ai fais des test avec eval(), [], this[] ou push(new B(param1, param2)) toujours "undefined", et dans le dernier cas l'objet n'a pas de nom ce qui m'embête pour la suite.
Voilà, à votre bon coeur messieurs dames !
Merci d'avance.
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 5 déc. 2006 à 09:43
Salut,
var objetEnCours:Object = minuscules[j]+majuscules[i];
-> que veux tu faire précisément là ???
Déjà je commencerais par instancier le nouvel Objet
var objetEnCours:Object = new Object()
ensuite tu peux lui affecter des parametres comme
objetEnCours.minuscule =minuscules[j];
objetEnCours.majuscule= majuscules[j];
ou encore
objetEnCours.nom= minuscules[j]+majuscules[i]; Cela devrait résoudre en même temps ton problème de tableau trace(leTableau) PS : dans tes tableaux, c'est quoi le ?
public var minuscules:Array = ["a", "b", "c", ? "n"];
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 5 déc. 2006 à 12:54
Salut,
oui, c'est normal.
Tu dois premièrement instancier le tableau dans le constructeur, sinon tu introduis des objets dans un tableau qui n'existe pas... ce qui provoque bien sur une erreur