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 :

parent.addChild par l'exemple


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Par défaut parent.addChild par l'exemple
    Bonjour, Newbie en AS3 je cherche un bout de code illustrant clairement la commande parent.addChild(...).

    Si au niveau du concept ça me parait clair en revanche concrètement j'ai du mal...

    Z'auriez ça en magasin ?

    Merci.

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    Tu ouvres un nouveau document FlashCS3 et tu mets comme classe de document la classe Main.
    Main.as :
    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
     
    package {
     
    	import flash.display.MovieClip;
    	import MaClasse;
     
    	public class Main extends MovieClip {
     
    		public var sprite1 : MaClasse;
     
    		public function Main() {
    			sprite1 = new MaClasse();
    			addChild(sprite1);
    		}
    	}
     
    }
    Cette classe crée un nouvel élement "sprite1" de type "MaClasse" et l'ajoute à la scène.

    Regardes maintenant la classe "MaClasse.as" :
    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
     
    package {
     
    	import flash.display.Sprite;
     
    	public class MaClasse extends Sprite {
     
    		public var sprite2 : Sprite;
     
    		public function MaClasse() {
    			sprite2 = new Sprite();
    			parent.addChild(sprite2);
    		}
     
     
    	}
     
    }
    Elle crée un nouvel élement "sprite2" de type Sprite puis fait un "parent.addChild(sprite2);". Cela signifie que "sprite2" sera ajouté dans son "parent" soit ici la classe Main.as. (= Ajoute "sprite2", dans le clip qui contient une instance de MaClasse)

    Je suis assez clair ??

    Bon courage !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Par défaut
    Merci Matieu de cette réponse rapide.
    Une fois encore sur le principe les choses sont claires.

    Ceci étant sur le code que tu me proposes l'erreur bien connue #1009 persiste sur MaClasse...

    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.

    Je suis perplexe...et pas très fier...


  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    Tiens je t'ai mis un exemple (attention c'est un fichier CS4, si tu peux pas le lire, demande moi, je te le convertirais)
    Fichiers attachés Fichiers attachés

  5. #5
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Alors l'erreur viens surement du fais que parent n'existe pas ^^

    Si un objet d'affichage n'a jamais était ajouter , il a pas de parent (c'est un orphelin ). Une fois que tu l'aura ajouter a un autre objet il aura un parent , un objet d'affichage ne peut avoir qu'un parent.

    Le seul objet qui a pas de parent et qui est toujours là c'est le stage.

    Exemple simple et complet ^^:

    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
    21
    22
    23
    24
     
    var shape:Shape = new Shape();
     
    trace( shape.parent ); //null ( il est pas attribué )
     
    stage.addChild( shape );
     
    trace( shape.parent ); //[object Stage]
     
    trace( stage.numChildren ); //2
     
    var sprite:Sprite = new Sprite();
     
    sprite.addChild( shape );
     
    trace( sprite.parent ); //null ( il est pas attribué )
     
    trace( shape.parent ); //[object Sprite] ( il est attribué et en l'occurence object === sprite )
     
    trace( stage.numChildren ) //1
     
    stage.addChild( sprite );
     
    trace( stage.getChildAt(1)===sprite ); //return true;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 37
    Par défaut
    Citation Envoyé par matieu Voir le message
    (attention c'est un fichier CS4, si tu peux pas le lire, demande moi, je te le convertirais)
    Merci j'accepte je n'ai pas CS4 en ligne....
    Oui je sais j'abuse....
    D'avance merci.


    Merci IP-Fix j'ai bien lu ton propos et analysé ton code.
    Il est limpide. Mais il ne contient pas d'illustration concrète de la commande parent.addChild(...)

  7. #7
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    parent.addchild sa sert a ajouter un enfant dans le meme container que le parent ..

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var shape1:Shape = new Shape();
    var shape2:Shape = new Shape();
     
    stage.addChild(shape1);
     
    //Ajout de shape2 dans le meme container que shape1
    shape1.parent.addChild(shape2); //Pareil que stage.addChild(shape2) car shape1.parent === stage
     
    trace( stage.numChildren ); //3
    Bref sa sert pas a grand chose à part dans certains cas

    Si tu est dans une class d'un objet héritié de displayObject la synthaxe deviens :

    parent.addChild( ... );

    parent etant le parent de ton objet ( class ) en cours.

    Si tu as parent == null alors tu tente null.addChild( ... ); ce qui est evidemment une erreur critique.

    J'espère que sa t'a éclairé et que tu te prend pas trop la tete ^^

    Salut !

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

Discussions similaires

  1. [LIVRE] ruby par l'exemple
    Par ash.ice.loky dans le forum Ruby
    Réponses: 8
    Dernier message: 05/03/2007, 21h40
  2. Réponses: 36
    Dernier message: 09/09/2006, 03h06

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