Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
704 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS2.0 : portée dans gestionnaire écrit dans une classe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AS2.0 : portée dans gestionnaire écrit dans une classe

n°1095953
irimi
Posté le 25-05-2005 à 09:32:22  profilanswer
 

Salut,
 
j'ai une classe AS2.0, dans laquelle je veux écrire des gestionnaires d'événements à la volée. Dans ceux-ci je veux invoquer l'instance courante de la classe, mais j'ai un problème de portée, je n'y arrive pas... C'est pas clair ? Je m'explique, avec un bout de code.
 

Code :
  1. class MaClasse
  2. {
  3.   // membres de la classe
  4.   // (...)
  5.   // constructeur
  6.   // (...)
  7.   // une méthode
  8.   public function maFonction():Void
  9.     {
  10.       // (...)
  11.       // ici j'écris le gestionnaire d'événements, par exemple
  12.       // pour un MovieClip dont je connais l'existence sur la scène :
  13.       _root.unClip.onRollOver=function()
  14.         {
  15.           // voilà, c'est ici que je voudrais faire appel à
  16.           // l'instance courante (this) de la classe MaClasse.
  17.           // mais si je fais appel à this ici j'ai l'impression
  18.           // que ça fait référence à _root.unClip...
  19.           // (...)
  20.         }
  21.       // (...)
  22.     }
  23. }


 
J'ai une solution bancale, qui est de faire une classe définissant tout ça pour le movieclip en question, en la rattachant à un symbole (linkage), avec un pseudo-constructeur init() qui me permet de passer l'instance de MaClasse au clip. Mais c'est un peu laborieux pour peu de choses, et surtout pas très souple : déjà ça fait un .as de plus, et en plus j'utilise un compilateur alternatif (www.mtasc.org), donc j'évite au maximum d'ouvrir l'éditeur flash de Macromedia, bien trop lourd (et buggué) pour le développement.
 
Voilà, si quelqu'un a une solution élégante (et légère !), je prends avec grande joie !

mood
Publicité
Posté le 25-05-2005 à 09:32:22  profilanswer
 

n°1098006
titouille
Posté le 26-05-2005 à 14:14:07  profilanswer
 

Nan mais je sais pas si tu sais en général comment on utilise des classes... à quoi te sert ta classe "MaClasse" ?? c'est une classe "controleur" qui s'occupe de gérer la base ??
Car mettre un appel à "_root" dans une classe, c'est plutot contre nature...
 
Mais bref, si tu veux faire appel à ton instance de classe dans ton gestionnaire, t'as qu'a déclarer une référence à l'instance juste avant de déclarer le gestionnaire, et normalement, tu y aura accès...
 
par exemple :
 
function maFonction( Void ):Void
{
var owner:MaClasse = MaClasse( this ); // casting pour bien passer une instance de "MaClasse";
 
monObjet.onRollOver = function()
{
trace( owner );
}
}
 
 
mais dans cette histoire, tu ferai mieux de passer "unClip" comme référence et d'avoir une variable dans "MaClasse" qui va accueillir cette référence, car le "_root", c'est vraiment pas dans l'esprit AS2 et/ou POO...
 
Bon courage, a++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS2.0 : portée dans gestionnaire écrit dans une classe

 

Sujets relatifs
Utilisation d'un objet dans une classe ?Hériter d'une classe dans un même package
Structure ou classe?classe recursive, erreur de logique introuvable... :( [résolu ^^']
[résolu] [PHP5] Redefinir une classehéritage de classe
Quelle classe PHP pour du PDF : formulaire d'inscriptionCacher une classe CSS à l'impression
quelqu'un aurait le code de logiciel "the rename" écrit en tcl/tkProblème installation classe avec JRE
Plus de sujets relatifs à : AS2.0 : portée dans gestionnaire écrit dans une classe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR