OVH Cloud OVH Cloud

[flash MX 2004 - AS2] pb de visibilit? de membre

1 réponse
Avatar
chambio
Bonjour,

voil? mon probl?me
j'ai des membres
private _A:number par exemple
private _X:object

un contructeur de la classe C
c()
{
x = new object() je cr?e l'objet
x.onLoad = function(flag) je surcharge onLoad de X
{
et la le pb arrive.....
_A = 5 marche pas.....
}
}

Evidement car _A n'est pas visible depuis la classe object (dont l'instance
est x)

Comment faire pour affecter _A ?????

Le but est le suivant
Une classe initialise un clip par exemple
lorsque ce clip est cr?? il execute onload
je veux que ma classe qui initialise affecte une variable qui dit "ok le clip
a ete cr?e"
Pour ca j'ai besoin que dans onload on affecte un membre de ma classe

bien sur je pourrais mettre l'instance de ma classe dans un truc genre
_root.instance, et ensuite acc?der ? _root.instance._A (sous reserve de mettre
A en public) mais ca serait crado

L'autre solution consiste a faire une varible static de classe... mais si je
cr?e plusieurs instance.... ca merde.

Bref je tourne en rond.

Je pense qu'en C++ je r?glerai le probl?me avec un classe Amie mais en flash
???

Merci de votre aide

1 réponse

Avatar
zwetan
salut,




[snip]

un contructeur de la classe C
c()
{
x = new object() je cr?e l'objet
x.onLoad = function(flag) je surcharge onLoad de X
{
et la le pb arrive.....
_A = 5 marche pas.....
}
}

Evidement car _A n'est pas visible depuis la classe object (dont


l'instance
est x)

Comment faire pour affecter _A ?????



utilise le "this"

function C( )
{
var self = this;
x = new Object();
x.onLoad = function()
{
trace( self._A );
}
}

techniquement on utilise les closures, puissante feature de ECMAScript,
pour pouvoir acceder a differents contexte de block code


Le but est le suivant
Une classe initialise un clip par exemple
lorsque ce clip est cr?? il execute onload
je veux que ma classe qui initialise affecte une variable qui dit "ok le


clip
a ete cr?e"
Pour ca j'ai besoin que dans onload on affecte un membre de ma classe

bien sur je pourrais mettre l'instance de ma classe dans un truc genre
_root.instance, et ensuite acc?der ? _root.instance._A (sous reserve de


mettre
A en public) mais ca serait crado



AS2 est juste de la syntaxe ....pour le compilo Flash MX 2004

une fois que le code est compilé il n'y a PAS de "private"...
et on peut tout acceder en "public" lors de l'execution du code



L'autre solution consiste a faire une varible static de classe... mais si


je
cr?e plusieurs instance.... ca merde.



logique une var statique est declarée au niveau de la classe
pas de l'instance...


Bref je tourne en rond.

Je pense qu'en C++ je r?glerai le probl?me avec un classe Amie mais en


flash
???

Merci de votre aide




de nada

zwetan