Flash AS2.0 comment communiquer entre 2 classes

cs_seed Messages postés 99 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 19 mars 2005 - 12 mars 2004 à 22:53
cs_seed Messages postés 99 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 19 mars 2005 - 15 mars 2004 à 20:23
Bonjour,
J'aimerais savoir comment est il possible de communiquer entre deux classes en AS2 je m'explique :

j'ai une classe appelé classe1 qui contient une variable public mavar

je voudrais pouvoir appeler celle-ci à l'interireur d'une autre classe nommé classe2
voici un exemple

class classe1(){
public var mavar:Number;
function classe1(arg1:Number){//constructeur
this.mavar=arg1;
}
}

class classe2(){
function classe2(){
//constructeur
}
public function maFonction(){
trace(classe1.mavar);
}
}

dans le fla je fais :

var c1:classe1= new classe1(999);
var c2:classe2= new classe2();
c2.maFonction();

et là flash m'envoi une erreur disant que classe1 n'est pas une propriété de classe2

Esque qqn aurait une solution appart utiliser une variable static?

3 réponses

cs_seed Messages postés 99 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 19 mars 2005
13 mars 2004 à 22:57
QUELQUES CORRECTIONS DANS LE CODE

class classe1{
public var mavar:Number;
function classe1(arg1:Number){//constructeur
this.mavar=arg1;
}
}

class classe2{
function classe2(){
//constructeur
}
public function maFonction(){
trace(c1.mavar);
}
}

dans le fla je fais :

var c1:classe1= new classe1(999);
var c2:classe2= new classe2();
c2.maFonction();

voila c'est mieu
0
hacklyn Messages postés 3 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 mars 2004
15 mars 2004 à 01:23
Salut,
la "solution" de seed est inadaptée et non conforme: en effet l'objet c1 qu'il invoque dans la Méthode maFonction
n'est déclaré nulle part....Donc on a toute les chances d'avoir une erreur à la compilation.En poo pour que des instances puissent communiquer il faut que leurs classes contiennent des methodes ad-hoc (les messages).De plus pour que les instances puissent s'envoyer des messages il faut que les classes possèdent un LIEN soit de composition,soit d'association soit de dépendance.

par exemple avec un lien de composition:

//******************************
class Classe1 {
private var mavar:Number;
//constructeur
function Classe1(arg1:Number) {
this.mavar = arg1;
}
public function tracemavar() {
trace(mavar);
}
}
//******************************
//******************************
class Classe2 {
var obj_c1:Classe1;
//constructeur
function Classe2(objc1:Classe1) {
this.obj_c1 = objc1;
}
public function maFonction() {
obj_c1.tracemavar();
}
}

dans le fla je fais :

var c1:Classe1= new Classe1(999);
var c2:Classe2= new Classe2(c1);
c2.maFonction();
0
cs_seed Messages postés 99 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 19 mars 2005
15 mars 2004 à 20:23
Merci beaucoup hacklyn pour ton explication et le code.
0
Rejoignez-nous