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 :

pb addchild avec flashdevelop


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
    Avril 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 12
    Par défaut pb addchild avec flashdevelop
    Bonjour,
    Je débute en AS 3 donc je viens de telecharger Flashdevelop 3.0 ainsi que flex sdk. J'ai bien paramétré le "flex sdk location" en indiquant le chemin de flex.
    Je crée ensuite un nouveau projet AS3 (avec création auto du main), et je crée une nouvelle classe "classe1".

    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
    25
    26
    27
    28
    29
     
    package  
    {
    	import flash.display.Sprite;
    	import flash.text.TextField;
     
    	/**
    	 * ...
    	 * @author ...
    	 */
    	public class Classe1 
    	{
     
    		public function Classe1() 
    		{
     
    		}
    		public function affiche ()
    		{
    			var conteneur : Sprite = new Sprite();
    			addchild(conteneur);
     
    			var montext : TextField = new TextField();
    			montext.text = "bonjour";
    			conteneur.addChild(montext);
    		}
    	}
     
    }
    j'appelle la fonction affiche à partir du fichier main mais quand je compile, j'ai le message suivant à propos de "addchild

    Appel à une méthode qui ne semble pas définie"
    j'ai commencé a lire le pdf de Thibault Imbert
    pratique actionscript 3

    et il utilise cela sans définir addchild


    Si qq à une idée

    Nb : Si je rajoute la propriété autosize au textfield , jai le meme probleme avec "TextFieldAutoSize.LEFT"
    Acces à la propriété non définie TextFieldAutoSize.LEFT
    Merci d'avance

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut
    Bonjour

    J'ai un peu le même problème avec addChild() (pareil je suis sous flashdevelop ^^)

    J'ai essayé pour contourner le probleme, d'instancier ma classe dans le main et d'afficher avec addChild cet objet, je n'ai plus d'erreur mais rien ne s'affiche é_è

    Je ne sais plus où j'avais lu qu'on pouvait aussi passer en parametres la scene au constructeur de la classe un peu comme ça :

    dans la classe :
    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
     
    public class Forme extends Shape
    	{
     
    		private var monCaller:Object;
     
    		public function Forme(caller:Object)
    		{
    			// ... dessine une forme ...
     
    			var monCaller = caller;
    			monCaller.addChild(this);
     
    		}
     
    	}
    et dans le main (ou init) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var _forme:Forme = new Forme(this);
    Dans ce cas aussi, je n'ai pas d'erreur levée à la compilation, mais rien ne s'affiche T_T

    En ce qui concerne le TextFieldAutoSize.LEFT , j'ai rajouté dans la classe concernée un petit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import flash.text.TextFieldAutoSize;
    et ça marchait nikel u_u.

    Donc si quelqu'un sait ce qu'il se passe avec cet obscur addChild ^^' ..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 12
    Par défaut
    M'ci pour ta réponse

    Pour le
    import flash.text.TextFieldAutoSize;
    , ca fonctionne mais je ne comprend toujours pas pourquoi on doit le mettre car dans d'autres exemples, cela n'y figure pas. Au final, j'ai rajouté pour être sur de ne rien oublier
    import flash.text.*;
    Pour le addchild, je passe la scène par le constructeur comme tu l'as indiqué
    et je rajoute
    monCaller.addchild(conteneur);
    pour rajouter le sprite à la scène

    Ca ne génère plus d'exception mais le swf reste tout blanc, rien ne s'affiche


    Dur dur flashdevelop

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 12
    Par défaut
    Ca fonctionne, j'ai remis le flash player à jour et je devais faire une fausse manip. J'ai aussi viré tous les anciens produits adobe.

    Le main
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    package 
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.text.TextField; 
    	/**
    	 * ...
    	 * @author ...
    	 */
    	public class Main extends Sprite
    	{
     
    		public function Main():void 
    		{
     
    			if (stage) init();
    			else addEventListener(Event.ADDED_TO_STAGE, init);
    		}
     
    		private function init(e:Event = null):void 
    		{
     
     
    			 removeEventListener(Event.ADDED_TO_STAGE, init);
    			 var maClasse : Classe1 = new Classe1();
    			 maClasse.affiche(this);
     
    		}
     
    	}
     
    }
    Classe1
    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
    25
    26
    27
    28
    29
    30
     
    package   
     { 
         import flash.display.Sprite; 
         import flash.text.TextField; 
         import flash.display.DisplayObjectContainer;
     
         /** 
          * ... 
          * @author ... 
          */ 
         public class Classe1 extends Sprite
         { 
     
             public function Classe1() 
             { 
     
             } 
             public function affiche(pConteneur:DisplayObjectContainer):void 
             { 
                 var conteneur : Sprite = new Sprite(); 
                 pConteneur.addChild(conteneur); 
     
                 var montext : TextField = new TextField(); 
                 montext.text = "bonjour3";
    	     conteneur.addChild(montext); 
             } 
         } 
     
     }
    puis un clic droit sur index.html et execute


    Pfiouuu

  5. #5
    Membre actif
    Homme Profil pro
    Directeur technique
    Inscrit en
    Novembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 56
    Par défaut
    A ce que je vois, par rapport à votre premier message. Ca ne marchait pas car votre classe n'héritait pas de Sprite, ce qui faisait que la méthode addChild n'existait pas.

    Dans le dernier exemple, il y a bien "extends Sprite" donc la méthode addChild ne fait pas d'erreur.

    Concernant votre solution, il me semble qu'elle est inutilement compliquée

    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
    25
    26
    27
    28
    29
    30
    31
    32
    package 
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.text.TextField; 
    	/**
    	 * ...
    	 * @author ...
    	 */
    	public class Main extends Sprite
    	{
     
    		public function Main():void 
    		{
     
    			if (stage) init();
    			else addEventListener(Event.ADDED_TO_STAGE, init);
    		}
     
    		private function init(e:Event = null):void 
    		{
     
     
    			 removeEventListener(Event.ADDED_TO_STAGE, init);
    			 this.addChild(new Classe1());
     
     
    		}
     
    	}
     
    }
    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
    package   
     { 
         import flash.display.Sprite; 
         import flash.text.TextField; 
         import flash.display.DisplayObjectContainer;
     
         /** 
          * ... 
          * @author ... 
          */ 
         public class Classe1 extends Sprite
         { 
             public function Classe1() 
             { 
                 var montext : TextField = new TextField(); 
                 montext.text = "bonjour3";
    	this.addChild(montext); 
     
             } 
         } 
     
     }

  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
    Vivement intéressé par cet échange et notamment par la dernière intervention sur la simplification du code...

    Je voulais juste pour ne pas mourir idiot et être certain d'une chose :

    la présence du this dans les 2 lignes :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.addChild(new Classe1());
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.addChild(montext);
    est purement informative ?
    vu que quand on retire le this ça fonctionne bien....

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

Discussions similaires

  1. utiliser la class FLVPlayerBack avec flashdevelop ?
    Par saradevelop dans le forum ActionScript 3
    Réponses: 11
    Dernier message: 08/03/2015, 12h35
  2. Ouvrir projet et compiler avec Flashdevelop
    Par Benduroy dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 21/12/2012, 17h28
  3. taille de stage avec flashDevelop
    Par esperal dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 09/04/2010, 11h34
  4. [SimpleXML] Ajouter un noeud avec addchild en premier
    Par Nillak dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 11/05/2008, 00h09
  5. [SimpleXML] problème avec addChild
    Par AgentSmith92 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/11/2006, 14h48

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