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 :

Aucun affichage sur la scene [Débutant(e)]


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 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut Aucun affichage sur la scene
    Bonjour à tous,

    Comme vous l'aurez compris je débutte en flash et actionscript.

    Mon objectif ici et relativement simple :
    afficher un rectangle aux coins arrondis sur la scene en utilisant actionscript 3
    (je pense que ca va enfaire marrer plus d'un ... ).

    voici comment est architecturé mon code
    • classe Main avec son constructeur qui est le point d'entrée du programme.
    • une classe CRectangle_Arrondi


    Constructeur de la classe 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
     
    // ---------- INITIALISATION DE LA SCENE 
    	stage.quality   = "HIGH";
    	stage.scaleMode = StageScaleMode.NO_SCALE;
    	stage.align     = StageAlign.TOP_LEFT;
     
    // --------- CREATION ET INITIALISATION DU CONTAINER PRINCIPAL 
     
    	// Creation du container principal
    	this.Main_Container = new Sprite();
     
    	// init du container principal
    	this.Main_Container.x = 0 ;
    	this.Main_Container.y  = 0 ;
    	this.Main_Container.width = 1000 ;
    	this.Main_Container.height = 1000 ;
    	this.Main_Container.name  = "Main_Container" ;
    	this.Main_Container.buttonMode  = false ;
    	this.Main_Container.useHandCursor = true ;
     
    	// inscription du container principal à la scene
    	stage.addChild(this.Main_Container );
     
    // -------- CREATION DES ELEMENTS AFFICHABLES 
    	this.Rect_Arrondi = new CRectangle_Arrondi( 10	, 10 , 100 , 100 , 5 );
     
    //---------- AJOUT DES ELEMENTS SUR LA SCENE 
    	this.Main_Container.addChild(this.Rect_Arrondi );


    Voici maintenant le constructeur de 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public function CRectangle_Arrondi( Real_Coord_X : int ,
                                       Real_Coord_Y : int ,
                                       Real_Coord_Width : int ,
                                       Real_Coord_Height : int ,
                                       Marge : int  ) : void
    { 
    	if( Real_Coord_Width 	> 0  &&
    	    Real_Coord_Height > 0  &&
       	   Marge > 0 )
    	{			
    		this.x = Real_Coord_X 	; // px
    		this.y = Real_Coord_Y 	; // px
    		this.height = Real_Coord_Width	; // px
    		this.width = Real_Coord_Height ; // px	
     
    		this.Internal_Coord =	new Rectangle(Real_Coord_X + Marge,
                                         Real_Coord_Y + Marge ,
                                         Real_Coord_Width - ( 2 * Marge ) ,
                                         Real_Coord_Height - ( 2 * Marge ) );
                                         this.Marge_Interne = Marge ;
     
    		this.graphics.beginFill(0x009900);
     
    		this.graphics.drawRoundRect(0 , 0 , 
                                       this.width, this.height ,
                                       this.Marge_Interne ,
                                       this.Marge_Interne );
     
    		this.graphics.endFill(); 
     
    		this.visible = true ;
     
    	}
    }

    En conclusion,

    Ce code compile, mais n'affiche rien.
    J'avoue ne pas comprendre pourquoi...

    Merci d'avance pour vos réponses...

  2. #2
    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
    Coucou !

    Bienvenue dans l'as3

    Premiere remarque , mettre this partout n'est pas nécessaire, sa alourdi inutilement le code !

    Seconde remarque les Sprite/Shape et DisplayObject en générale on un x , y à 0 par defaut et visible = true donc les ligne suivant ne servent à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    this.Main_Container.x = 0 ;
    this.Main_Container.y  = 0 ;
    this.visible = true ;
    Troisieme remarque , c'est celle qui faisait planté ta classe , ne redefini pas le with de maniere brutale comme tu le fais quand ton objet est vide

    Voila les classe corrigé et simplifié :

    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.display.StageScaleMode;
    	import flash.display.StageAlign;
     
    	public class Main extends Sprite {
     
    		private var Rect_Arrondi:CRectangle_Arrondi;
     
    		public function Main() {			
     
    			stage.quality = "HIGH";
    			stage.scaleMode = StageScaleMode.NO_SCALE;
    			stage.align = StageAlign.TOP_LEFT;
     
    			Rect_Arrondi = new CRectangle_Arrondi(10, 10, 100, 100, 15);
     
    			addChild(Rect_Arrondi);
    		}
    	}	
    }
    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
     
    package  {
     
    	import flash.display.Shape;
     
    	public class CRectangle_Arrondi extends Shape {
     
    		private var marge:int;
     
    		public function CRectangle_Arrondi( x:int, y:int, width:int, height:int, marge:int):void
    		{ 
    			if( width>0 && height>0 && marge>0 )
    			{			
    				this.x = x;
    				this.y = y;
    				this.marge = marge;
     
    				graphics.beginFill(0x000000);	
    				graphics.drawRoundRect(0, 0, width, height, 5);
    				graphics.endFill(); 
     
    				trace( this.width ); // Width = width
    			}
    			else 
    				trace( 'error');
    		}	
    	}	
    }

    Derniere remarque , te prend pas la tete avec des nom de variable compliqué en constructeur comme Real_Value_X , x suffira comme tu peux le voir plus haut ^^

    Bonne Soirée !

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut merci !
    Parfait !

    Un grand merci pour cette réponse tres détaillée...

    merci également pour tes remarques sur "la bonne pratique"

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

Discussions similaires

  1. Aucun affichage dans ma scèene
    Par Cmdu76 dans le forum Ogre
    Réponses: 1
    Dernier message: 16/04/2013, 17h26
  2. Réponses: 0
    Dernier message: 22/04/2010, 16h53
  3. Réponses: 2
    Dernier message: 09/10/2004, 11h35
  4. [FLASH 5]un bouton dans une image pour revenir sur une scene
    Par patato valdes dans le forum Flash
    Réponses: 7
    Dernier message: 28/04/2004, 20h21
  5. DBGrid - Affichage sur 2 colonnes
    Par Grouik dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/04/2004, 17h37

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