Forums Développement Multimédia

Aller au contenu

Gestion de classe

CODE Actionscript

4 réponses à ce sujet

#1 screenart

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 86 messages

Posté 22 November 2011 - 17:53 PM

Salut à tous,

Voici une question concernant la gestion des classes.

Mon cas :

Un swf "Chargeur" qui en charge un autre "Menu". Ce dernier est étendu en MovieClip.

Dans ces deux swf j'importe la même classe perso disons "maclass.as" dans leur classe principal respective ce qui se traduit par :
import maclass;

Voila à partir de là il me semble avoir remarqué que lorsque je modifie maclass.as et que je recompile mon "Menu" la modification n'est pas prise en compte. Je dois recompiler le Chargeur.

Ma question :
Est ce que cela veut dire que lorsque flash détecte deux classes identiques (une dans chaque swf) il n'en n'utilise qu'une seul ?

Merci pour l'éclairage.

+++

#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 22 November 2011 - 20:28 PM

Oui, c'est tout a fait cela si vous utilisez les paramètres par défaut de l'objet URLRequest transmis à l'objet Loader. La classe utilisée est celle de l'application principale.

Regardez la documentation des classes URLRequest et ApplicationDomain pour savoir comment charger des SWF dans des domaines d'application différents et ainsi gérer l'utilisation drs classes.

Sinon, pour éviter ce fonctionnement, vous pouvez placer les classes dans des packages différents.

#3 screenart

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 86 messages

Posté 22 November 2011 - 22:55 PM

Merci deuxsucres pour cette précision bien utile. :smile:

#4 nicoptere

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3946 messages

Posté 23 November 2011 - 10:10 AM

Voir le messagescreenart, le 22 November 2011 - 17:53 PM, dit :

Ma question :
Est ce que cela veut dire que lorsque flash détecte deux classes identiques (une dans chaque swf) il n'en n'utilise qu'une seul ?
oui, lors de la compilation, la première occurrence d'une classe prend le pas sur (écrase) les déclarations suivantes. ça vient de l'applicationDomain je crois ; le nom de package unique.
pas sûr...


en gros l'occurrence de MaClass dans preloader, sera réutilisée dans ton menu et tous les autres contenus qui l'utiliseront.

tu peux t'en assurer en faisant faire quelque chose de funky à Maclass ( function doTheTwist():{ trace( 'OOOOOOH YEAH!' ); } ), puis en compilant le Main ( qui va donc faire le Twist ).
si par la suite tu enlèves l'appel à cette méthode et que tu ne recompiles que le contenu chargé (qui se sert aussi de MaClass ), ça va marcher sans le twist quand tu lanceras l'anim toute seule.
par contre, quand tu vas charger ce contenu dans le Main, la 'version' de MaClass dans Main (celle qui fait le twist) prendra le pas sur celle chargée dans ton contenu.

donc l'idée c'est de dissocier au maximum les classes partagées entre le Preloader et les contenus loadés ou bien de toujours re-compiler l'animation qui charge avant de vérifier l'ensemble.

pas forcément très clair ce que je viens de dire...

autre précision, si tu as une variable de type MaClass dans Main, MaClass sera chargée à cet endroit.
mauvaise idée dans un preloader :)

#5 screenart

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 86 messages

Posté 23 November 2011 - 17:29 PM

Merci également à toi nicoptere.

J'ai maintenant le principe bien en main. A vrai dire ce mode de fonctionnement ne me pose pas de problème maintenant que je l'ai bien compris. :smile:

+++



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)