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 :

Traduction" basique de _root en AS3.0


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Par défaut Traduction" basique de _root en AS3.0
    Bonjour à tous !
    Je pratique depuis longtemps l'AS2.0, et je viens de passer en AS3.0, qui est vraiment beaucoup mieux ! Mais bon j'ai quelques soucis de "traduction".
    En effet, meme apres beaucoup de recherche, je n'arrive pas à acceder à des variables ou à des fonctions, qui sont déclarées dans le script pricipal (l'ancien _root), depuis un clip. En gros pour traduire l'ancien :
    _root.fct() ou this._parent.var1

    J'ai essayer toutes les combinaisons avec root, stage, Stage, this.parent, this.root, etc...
    J'ai seulement trouvé une commande "bricolage", qui fonctionne mais qui n'est pas puissante et plutot lourde à utiliser : this.parent["fct"].call();
    J'ai exactement le meme probleme pour nextFrame() depuis un clip pour changer la tete de lecture de la scene pricipale...
    Bon voila j'espere que vous pourais m'élucider mon probleme !
    Merci beaucoup !


  2. #2
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    En effet le _root traditionnel n'est plus (et c'est tant mieux ). En AS3, il faut penser plus OOP Donc pour faire des méthodes globales, préfères créer une classe avec des méthodes statiques à l'intérieur que tu pourras appeler via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClassUtils.maMethode(...);
    Exemple pour les méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package
    {
       public class MaClassUtils
       {
          public static function maMethod(...):void { ... }
       }
    }
    @++

  3. #3
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut
    en clair , comment j accede a l ancien root depuis une classe ?

    dans un package et une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _root.num_users.text = this.num_users;
    ne fonctionne pas .. et je trouve pas avec Stage et co comment faire...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par défaut
    Attention, le stage n'est pas le _root.

    En AS2, le _root, c'était un four tout bordélique où on mélangeait objets graphiques, variables et fonctions. L'AS2, même s'il présentait des possibilités objet est un langage à l'architecture procédurale.

    En AS3, tu es dans un cadre très strict orienté objet (il va certainement falloir que tu te formes un peu à la POO). Cela signifie qu'il n'y a pas de _root, il n'y a que des objets indépendants les uns des autres. Avec un objet particulier, important, qui est le container de l'application (qu'on pourrait éventuellement considérer comme le _root).

    Un objet (y compris le container de l'application) ne peut pas en appeler un autre, ou être lui-même appelé, sans passer par une référence à cet objet. En gros, il faut lui passer une référence (dite aussi pointeur) d'un objet A à un objet B pour que celui-ci puisse l'appeler.

    Si tu veux reproduire un _root, il te faut une classe statique globale dans laquelle tu fourres tout. Ce qui est simple mais fortement déconseillé, car c'est tenter de reproduire une programmation procédurale dans un environnement objet...

    C'est le code que te proposes theCaptain.

    Enfin, le stage, c'est la base de la pile graphique. Autrement dit, le stage c'est un empilement virtuel d'objets graphiques, qui sert à la représentation et l'organisation visuelle de l'application. Autrement dit, le stage ne contient pas en soi de variables ou de méthodes.

    Pour terminer, j'ajoute que la documentation de Flash a des chapitres très clairs, bien faits et détaillés sur la programmation objet. Je t'engage à les lire attentivement, sinon tu n'arriveras pas à t'en sortir avec l'AS3 qui, en terme d'architecture, n'a rien à voir avec l'AS2.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par défaut
    Heu... à la vue du nombre impressionnant de lectures de ce thread, j'imagine qu'il y a un paquet de gens qui se posent la question...

    J'insiste donc sur le fait que:
    - en AS2 vous êtes en programmation procédurale
    - en AS3 vous êtes en programmation objet

    Cela n'a rien à voir. Et en ce sens, l'AS3 n'est pas simple. Je ne saurais que trop vous encourager à vous former à la POO (programmation orientée objet). Et en particulier à lire la doc spécifique de Flash prévue à cet effet.

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Par défaut Root
    Salut,
    pour ciblé un clip ou une variable en AS3, tu dois d'abord localiser ton clip ou variable ou elements avec la fonction MovieClip puis tu ecrit le reste comme en AS2.
    Exemple :
    Variable RT declarer dans le clip principale.
    var rt:int = 10;
    Besoin dans le clip nommer MC_Math.
    var Total:int = 58 * MovieClip(parent).rt;

    Si tu veut utiliser un gotoandplay dans un clip nommer MC_Cadre contenu dans la scene principale idem :
    exemple :
    MovieClip(parent).MC_Cadre.gotoAndPlay(2);

    Bon courage

Discussions similaires

  1. équivalent de "_root.dropzone" en As3?
    Par oescoffier dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 30/03/2009, 15h22
  2. _root en as3 ?
    Par iceman2001 dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 30/09/2008, 11h55
  3. recuperation variables php vers AS3 equivalent _root.variable
    Par grafikid dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 09/01/2008, 00h26
  4. Traduction
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2002, 23h43
  5. Changement de langue dynamique (D6 et outils de traduction)
    Par agon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2002, 16h15

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