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 1 & ActionScript 2 Discussion :

[AS2] passer paramètre à un constructeur par attachMovie()


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 110
    Points : 51
    Points
    51
    Par défaut [AS2] passer paramètre à un constructeur par attachMovie()
    Et ben voilà encore moi, toujours là pour poser des questions.
    Voici mon pb, j'instancie une classe par l'intermédiaire d'un attachMovie().
    Et je voudrais faire passer des paramètres au constructeur de ma classe par l'intermédiaire de l'attachMovie().


    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
    class Carte extends MovieClip{
     
        //-----------------------------------------------------------------
        //----------------------------VARIABLES------------------------
        //-----------------------------------------------------------------
     
        private var nom_carte:String;
     
     
        //-----------------------------------------------------------------
        //constructeur
        function Carte(param_nom_carte:String) {
     
            nom_carte = param_nom_carte;    
     
        }
        //-----------------------------------------------------------------
    Et voici comment j'instancie ma classe :

    PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _root.attachMovie('ville','mc_ville',1, { _x:674 , _y:456 , param_nom_carte:'ville' });
    Et param_nom_carte ne passe pas dans le constructeur, et comme je connais pas trop la syntaxe, quelqu'un pourrait surement me dire comment faire.

    merci d'avance

  2. #2
    Membre actif Avatar de younes_
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 229
    Points : 265
    Points
    265
    Par défaut
    Essai celà plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Carte extends MovieClip
    {
     
        private var nom_carte:String;
     
        function Carte() {       
        }
     
        function set _nom(param_nom_carte:String)
        {
             nom_carte = param_nom_carte
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _root.attachMovie('ville','mc_ville',1, { _x:674 , _y:456 , _nom:'ville' });
    L'instanciation ce fait grace à des accesseurs setter

    a+
    ------------------------
    Website Interactive Object

  3. #3
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Jolie solution, je ne le savais pas.

    Néanmoins, les accesseurs set et get ne sont pas trop préconisés, il y a eu quelques threads sur le sujet dans la mailing list mtasc... Ils ne sont pas supportés par ce dernier, et ne font en réalité pas partie des standards EMCA, je crois... en tout cas, je sais qu'au niveau des composants, les setters ne fonctionnent pas, et on doit retoucher les fichiers AS pour que ça passe...

    Enfin, moi j'opterai plutôt pour la méthode expliquée par Colin Moock dans EAS2, qui consiste à créer une méthode statique pour appeler son objet, en passant les paramètres de base à la méthode. Tu peux ensuite rajouter à ta méthode statique les paramètres supplémentaires de ton choix... Moi je passe un objet nommé "props", tel qu'on peut le faire avec la méthode attachMovie. Je crée une méthode "init" à laquelle je passe mon objet, et elle s'occupe de valoriser les propriétés.

    Un exemple d'implémentation :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    class ch.titouille.controls.Control extends MovieClip
    	{
    	// --------------------------------------------------------------------------------
    	// VARIABLES DECLARATIONS
    		/**
    		* @var myVar:Type my description
    		*/
    	// --------------------------------------------------------------------------------
    	// CONTROLS DECLARATIONS
    		/**
    		*/
     
    	// --------------------------------------------------------------------------------
    	// FUNCTIONS DECLARATION
    		// --------------------------------------------------------------------------------
    		/**
    		*/
     
     
    	// --------------------------------------------------------------------------------
    	// EVENTS DECLARATIONS
    		// --------------------------------------------------------------------------------
    			/**
    			*/
    	// --------------------------------------------------------------------------------
    	// CONSTRUCTOR
    		// --------------------------------------------------------------------------------
    			/**
    			* @constructor
    			*/
    		function Control()
    			{
    			}
     
    	// --------------------------------------------------------------------------------
    	// CREATE INSTANCE METHOD
    		// --------------------------------------------------------------------------------
    			/**
    			* create instance of control
    			*
    			* @param instanceName:String name of the created instance of control
    			* @param target:MovieClip target of the instance
    			* @param depth:Number depth of the instance
    			* @param props:Object objects of properties to initialize control
    			* @return Control
    			*/
    		public static function createControl( instanceName:String, target:MovieClip, depth:Number, props:Object ):CircularLoader
    			{
    			var ctrl:Control = Control( target.attachMovie( "ControlSymbol", instanceName, depth ) )
    			ctrl.init( props );
    			return ctrl;
    			}	
     
    	// --------------------------------------------------------------------------------
     
    	// --------------------------------------------------------------------------------
    	// INITIALISATION AND BASE METHODS
    		// --------------------------------------------------------------------------------
    			/**
    			* initialize the control
    			*
    			* @return Void
    			*/
    		private function init( props:Object ):Void
    			{
    			for( var val in props )
    				this[val] = props[val];
    			}
     
    		// --------------------------------------------------------------------------------
    			/**
    			* move the control to the x:y positions
    			*
    			* @param x:Number x position
    			* @param y:Number y position
    			* @return Void
    			*/
    		public function move( x:Number, y:Number ):Void
    			{
    			this._x = x;
    			this._y = y;
    			}
    	}

    Ensuite, dans mon cas, j'instancie mon objet comme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import ch.titouille.controls.Control;
     
    var ctrl:Control = Control.createControl( 'ctrl', this, 1, { _alpha:30, _rotation:10 } );
    Mais j'aurai très bien pu créer des variables à ma classes et les passer comme noms de paramètres, ou encore passer autre chose qu'un objet... un nombre et une string, par exemple.

    Si ça peut inspirer

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/02/2015, 01h20
  2. passer paramètre à applet par getParamètre
    Par domxaline dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 16/12/2013, 22h30
  3. Passer paramètre int par un evenement
    Par Ivenoproblemwiththat dans le forum C#
    Réponses: 2
    Dernier message: 30/01/2007, 17h56

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