Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2005, 11h38   #1
Membre à l'essai
 
Inscription : août 2004
Messages : 110
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 110
Points : 21
Points : 21
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 :
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 :
_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
ooyeah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2005, 13h20   #2
Membre confirmé
 
Avatar de younes_
 
Inscription : juin 2005
Messages : 229
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 229
Points : 239
Points : 239
Essai celà plutôt :

Code :
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 :
1
2
 
_root.attachMovie('ville','mc_ville',1, { _x:674 , _y:456 , _nom:'ville' });
L'instanciation ce fait grace à des accesseurs setter

a+
younes_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2005, 02h32   #3
Membre éclairé
 
Avatar de titouille
 
Inscription : juin 2005
Messages : 342
Détails du profil
Informations personnelles :
Âge : 32
Localisation : Suisse

Informations forums :
Inscription : juin 2005
Messages : 342
Points : 311
Points : 311
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 :
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 :
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
titouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h06.


 
 
 
 
Partenaires

Hébergement Web