IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

[AS3] Organisation du code sous FlashCS3


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut [AS3] Organisation du code sous FlashCS3
    Bonjour,

    Comment organiser son code sous FlashCS3? J'ai déja crée une classe qui est 'liée' à mon .fla en tant que Classe du document. Or j'aimerais créer un fichier .as ou une autre classe si nécessaire, qui s'occuperai de la gestion de mes boutons et de la navigation par exemple.

    C'est possible sans rajouter du code dans les images? J'aimerais si possible que tous mon code soit dans des fichiers .as en fait. Je suis peut êtres pas obliger de créer des classes à chaque fois d'ailleurs ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut

    Tu peux lié n'importe quel ressource de ta bibliothèque (Clip, Bouton, etc.) à une classe AS3 en fesant dans la fenetre bibliothèque : clic droit > Liaison. Il faut cocher "Exporter pour ActionScript", puis dans Classe tu met le nom de ta classe, et dans Classe de base la classe dont il dérive (généralement flash.display.MovieClip pour les MovieClip, SimpleButton pour les Boutons, etc.)

    Comme ça tu peux rajouter des méthodes/propriétés aux objets de ta bibliothèque
    La règle ici c'est que chaque objet de ta bibliothèque est une classe. Par contre tu n'as besoin de créer un fichier .as et de coder dedans que si tu as effectivement des méthodes à rajouter.
    Si tu veux simplement faire new MonClip(); dans ton code, il suffit de donner un nom de classe dans la fenêtre "Liaison" (tu n'as pas besoin de créer le .as correspondant).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut
    hum...je viens de créer un bouton nommé btnPlay dans la bibliothèque. Dans Liaison je l'ai exporté pour ActionScript. Dans le champs Classe j'ai mis : BtnPlay.as et dans la classe de base flash.display.SimpleButton.

    J'ai ensuite créé mon fichier BtnPlay.as dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package {
     
    	import flash.display.SimpleButton;
    	import flash.display.Sprite;
    	import flash.display.Loader;
    	import flash.display.LoaderInfo;
    	import flash.events.*;
    	import flash.net.*;
    	import flash.text.TextField;
     
    	public class BtnPlay extends flash.display.SimpleButton {
    		public function BtnPlay() {
    			btnPlay.addEventListener(MouseEvent.CLICK, bouton);
    		}
    		private function bouton(pEvt:Event):void {
    			monDebug.text = "ON CLICK OK";
    		}
    	}
     
    }
    monDebug.text etant un texte dynamique se trouvant sur la même image que l'occurence de mon bouton.

    Le problème c'est que ça ne fait rien. Je dois pas construire ma classe corectement je pense...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Ta classe est construite correctement, en revanche je pense que tu n'as pas bien compris un détail : quand tu fais une classe pour le bouton, le code que tu y met est "relatif" à ce bouton (cad this = le bouton). Donc il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		public function BtnPlay() {
    			addEventListener(MouseEvent.CLICK, bouton);
    		}
    		private function bouton(pEvt:Event):void {
    			parent.monDebug.text = "ON CLICK OK";
    		}
    parent désigne comme son nom l'indique le clip qui contient ton bouton ... si il y en a un.
    Les problèmes que tu risques d'avoir avec l'utilisation de parent, c'est qu'a priori on sait seulement que c'est un DisplayObjectContainer : il faut le caster si tu veux pouvoir utiliser des méthodes/propriétés que tu aurais rajouté

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut
    Euh...ça ne marche toujours pas....mais mon bouton et mon champs de texte ne sont pas dans le même clip. Donc je pense que 'parent' ne marcheras pas c'est ça?

    Pour que cela marche il faudrait que je regroupe mon bouton et le champs de texte en un clip (avec F8) ? Mais c'est pas très pratique...

    La mon bouton et mon champ texte dynamique sont sur différents calque, mais s'affichent au même moment (en 1 je sais pas trop comment on dit). y a pas moyen qu'ils comuniquent entre eux?

    edit : Je viens de tester de mettre un champ texte et un bouton dans un même clip, pour tester le parent. Mais cela ne marche pas.

    edit2 : Malgré les liaisons je pense pas que mon .fla s'occupe de mes .as en effet même en laissant des erreurs de syntax dans mon .as je peux toujours publier tranquilement ...

    edit3 : Euh un truc que je comprend pas trop non plus. Dans ma classe principal (enfin celle qui enregistrer en tant que classe du document) j'ai rajouter un import BtnPlay. Or meme comme ça, si il y a une erreur dans mon script BtnPlay je peux publier.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    edit2 : Malgré les liaisons je pense pas que mon .fla s'occupe de mes .as en effet même en laissant des erreurs de syntax dans mon .as je peux toujours publier tranquilement ...
    Tu peux tester que la liaison est bien effectuée en cliquant sur le petit tick vert à droite du champ texte où tu rentres le nom de la classe :
    Là il te dis :
    - Soit : La définition de cette classe a été détectée sur C:\...\BtnPlay.as
    => c'est bon est il te dis quel fichier correspond

    - Soit : Le chemin de classe ne contient pas de définition pour cette classe. Une définition sera générée automatiquement dans le fichier SWF lors de l'exportation.
    => tu as un problème de liaison. Dans ce cas il faut bien vérifier que tu n'as pas fait de faute de frappe par exemple, et que le fichier se situe au bon endroit (dans le même dossier que ton .fla).

    Ca donne quoi chez toi ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 51
    Par défaut
    Ha oki mes liaisons était mauvaises. (J'avais renté les .as). Oki bon bah maintenant il prend en compte mes script ! Pour me generer une erreur mais au moin ils sont pris en comptes.

    ça me met un :

    1119:Accès à la propriété monDebug peut-êtres non définie, via la référence de type static flash.display.DisplayObjectContainer
    parent.monDebug.text = "ON CLIK OK";
    edit1: J'ai tésté un cast comme cela ...d'après un exemple vue ailleur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (parent.monDebug as TextField).text = "ON CLIK OK";
    L'erreur reste la même...

    edit2 : J'arrive vraiment pas à atteindre mon Texte Dynamique

    J'ai testé pas mal de méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //solution 1
    TextField(this.parent).monDebug.text = "ON CLIK OK";
    //solution 2
    (this.parent as TextField).monDebug.text = "Hello";
    //solution 3
    this.parent['monDebug'].text = "Helllo";
    //solution 4
    TextField(this.parent).monDebug.text = "Hello";
    //solution 5
    var myClip:MovieCliper = MovieClip(this.parent);
    myClip.monDebug.text = "Hello";
    Dans le meilleur des cas ça publie mais ça ne fait rien sinon y a la même erreur que la haut...

    edit 3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.parent['monDebug'].text = "Hello";
    ça marche niquel en fait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/09/2005, 17h56
  2. [Debutant(e)]ligne de code sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/01/2005, 17h37
  3. Compiler un code sous windows
    Par KORTA dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 30/09/2003, 16h53
  4. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo