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

Flash Discussion :

[FLASH 8] compréhension de code AS


Sujet :

Flash

  1. #1
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut [FLASH 8] compréhension de code AS
    Bonjour,
    j'ai récupéré un classe assez géniale qui permet de faire un zoom très performant sur une image. Dans l'instanciation de cette classe on trouve le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // creation clip vide ZooMc
    var mcZoom:ZooMC = this.attachMovie(ZooMC.id, "zoom_mc", 1, {_x:150,_y:120});
    // on y attache une image
    mcZoom.attachMovie("image1", "image_mc", 1 );
    dans l'instruction attachMovie, en principe le deuxième paramètre est le nom du clip instancié or, dans le code qui suit on utilise jamais "zoom_mc" nulle part et là je comprends pas. J'ai besoin de comprendre avec précision ce mécanisme car je ne peux pas utiliser tel quel cette classe dans mon appli qui est beaucoup plus compliquée, est-ce que quelqu'un peut m'aider ??

    merci,

  2. #2
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,

    je suppose que ZooMc hérite de la classe MovieClip.
    Si tu regarde la doc, attachMovie renvoie une référence au movieClip attaché.
    Donc tu affectes ce MovieClip à ta variable mcZoom
    Tu peux donc l'utiliser comme tu l'attends par la suite.

    Cela est notamment pratique lorsque le nom du clip est généré dynamiquement :
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(var i:Number=0; i<5; i++) {
       var mc:MovieClip = this.attachMovie("idBiblio", "mc"+i, i);
       mc._x = mc._y = 10*i;
       // etc.
    }

  3. #3
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    pour compléter l'explication de freegreg, si tu regardes la doc, la méthode attachMovie retourne une référence vers le clip créé. Un petit bout de code pour l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var clip1:MovieClip = this.attachMovie("xxx", "leNouveauNom", 0);
    var clip2:MovieClip = this.leNouveauNom;
     
    trace(clip1 == clip2); //true
     
    clip1.varTest = "salut";
    trace(clip1.varTest); //salut
    trace(clip2.varTest); //salut
    En conclusion : tu n'as qu'un seul clip, mais plusieurs références vers celui-ci Ce qui implique que si tu modifies une propriété par le biais d'une de ces variables, cela se verra aussi par les autres !

    @++

  4. #4
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    ok, pour enfoncer le clou et voir si j'ai bien compris, dans l'exemple de freegreg à la sortie de la boucle mc est une référece sur mc4 donc si je veux accéder à ces clips il faudra revenir à quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.["mc" + i] //dans une boucle
    et coté thecaptain dans linstruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var clip1:MovieClip = this.attachMovie("xxx", "leNouveauNom", 0);
    "leNouveauNom" ne sert à rien puisque j'ai clip1 comme référence ? Bien que ça ne marche pas on pourrait très bien avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var clip1:MovieClip = this.attachMovie("xxx", "", 0);
    merci de votre patience.

  5. #5
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    Par défaut
    re,

    Alors certains points obsucs, à commencer par

    Citation Envoyé par dom_dev
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.["mc" + i] //dans une boucle
    non cela ne marche pas ! Les crochets peuvent cibler n'importe quelle variable (ou fonction) à l'intérieur de n'importe quel objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var cm:MovieClip = this.createEmptyMovieClip("test", 0);
    var cm2:MovieClip = this["test"];
    var cm3:MovieClip = this.test;
     
    cm["createEmptyMovieClip"]("autre", 0);
    bien entendu, plus tu évite ce genre de chose, mieux c'est Ensuite concernant ceci :
    et coté thecaptain dans linstruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var clip1:MovieClip = this.attachMovie("xxx", "leNouveauNom", 0);
    "leNouveauNom" ne sert à rien puisque j'ai clip1 comme référence ? Bien que ça ne marche pas on pourrait très bien avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var clip1:MovieClip = this.attachMovie("xxx", "", 0);
    Je pense que cela marche, mais je ne te le conseille pas vraiment... il est toujours mieux de donner un nom explicite car lorsque tu fera un trace sur un clip pour t'assurer du ciblage, c'est celui-ci qui sortira

    @++

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/03/2006, 11h26
  2. [FLASH MX] Mettre en gras dans ce code
    Par celina5880 dans le forum Flash
    Réponses: 6
    Dernier message: 15/01/2006, 16h16
  3. [FLASH MX2004] Rien ne se passe qd j'execute mon code
    Par adilou1981 dans le forum Flash
    Réponses: 2
    Dernier message: 28/07/2005, 00h31
  4. [FLASH MX2004 PRO] Recuperer le code source d'une page
    Par adilou1981 dans le forum Flash
    Réponses: 9
    Dernier message: 26/07/2005, 19h11
  5. [FLASH MX2004 PRO] Code de préload en AS2 & player 7
    Par Geilgestorm dans le forum Flash
    Réponses: 3
    Dernier message: 22/10/2004, 17h26

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