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 :

optimiser mon code avec une boucle for?


Sujet :

ActionScript 3

  1. #1
    Invité
    Invité(e)
    Par défaut optimiser mon code avec une boucle for?
    bonjour les flashcoders!
    j'ai récamment commencé à utiliser l'as3 dans flash. j'ai créé une petite classe qui me permet d'afficher des movie clips contenant du texte. Chaque movie clip a un listener pour pouvoir effectuer une tache lors d'un mouse over ou d'un mouse out. Génial, me direz vous, aucun bug tout fonctionne, c'est le bonheur...
    Oui mais j'aimerais aller plus loin et optimiser mon code. Je rêve d'une boucle for qui me permettrias de créer mes movies clips, mes text fields, de les formater et de leur attacher un event listener...:p
    voici donct mon code (attention c'est très long)
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
     
    package{
    	import flash.display.MovieClip;
    	import flash.display.*;
    	import flash.text.*;
    	import flash.events.*;
     
    	public class nav_Clips2 extends MovieClip{
     
    		public var nav1:TextField;
    		public var nav2:TextField;
    		public var nav3:TextField;
    		public var nav4:TextField;
    		public var nav5:TextField;
    		public var nav_format:TextFormat;
    		public var over_format:TextFormat;
    		const i:int = 12;
    		const j:int = 465;
     
     
    		public var mc1:MovieClip = new MovieClip();
    		public var mc2:MovieClip = new MovieClip();
    		public var mc3:MovieClip = new MovieClip();
    		public var mc4:MovieClip = new MovieClip();
    		public var mc5:MovieClip = new MovieClip();
     
    		public function nav_Clips2(){
    			/***************** Les Clips du menus ***************************/
    			//
    			mc1.x = j;
    			mc1.y = 280;
    			mc1.addEventListener(MouseEvent.MOUSE_OVER, over_handler1);
    			mc1.addEventListener(MouseEvent.MOUSE_OUT, out_handler1);
    			this.addChild(mc1);
    			//
    			mc2.x = j;
    			mc2.y = mc1.y+i;
    			mc2.addEventListener(MouseEvent.MOUSE_OVER, over_handler2);
    			mc2.addEventListener(MouseEvent.MOUSE_OUT, out_handler2);
    			this.addChild(mc2);
    			//
    			mc3.x = j;
    			mc3.y = mc2.y+i;
    			mc3.addEventListener(MouseEvent.MOUSE_OVER, over_handler3);
    			mc3.addEventListener(MouseEvent.MOUSE_OUT, out_handler3);
    			this.addChild(mc3);
    			//
    			mc4.x = j;
    			mc4.y = mc3.y+i;
    			mc4.addEventListener(MouseEvent.MOUSE_OVER, over_handler4);
    			mc4.addEventListener(MouseEvent.MOUSE_OUT, out_handler4);
    			this.addChild(mc4);
    			//
    			mc5.x = j;
    			mc5.y = mc4.y+i;
    			mc5.addEventListener(MouseEvent.MOUSE_OVER, over_handler5);
    			mc5.addEventListener(MouseEvent.MOUSE_OUT, out_handler5);
    			this.addChild(mc5);
     
    			/******************** Formatage du texte ***********************/
    			nav_format = new TextFormat;
    			nav_format.color = 0x000000;
    			nav_format.bold = true;
    			nav_format.font = 'Arial';
    			nav_format.size = 12;
     
    			over_format = new TextFormat;
    			over_format.color = 0xffffff;
    			over_format.bold = true;
    			over_format.font = 'Arial';
    			over_format.size = 12;
     
    			/****************** Texte des menus **************************/
    			nav1 = new TextField();
    			nav1.selectable = false;
    			nav1.autoSize = "left";
    			nav1.text = "Mon clip 1";
    			nav1.setTextFormat(nav_format);
     
    			nav2 = new TextField();
    			nav2.autoSize = "left";
    			nav2.selectable = false;
    			nav2.text = "Mon clip 2";
    			nav2.setTextFormat(nav_format);
     
    			nav3 = new TextField();
    			nav3.autoSize = "left";
    			nav3.selectable = false;
    			nav3.text = "Mon clip 3";
    			nav3.setTextFormat(nav_format);
     
    			nav4 = new TextField();
    			nav4.autoSize = "left";
    			nav4.selectable = false;
    			nav4.text = "Mon clip 4";
    			nav4.setTextFormat(nav_format);
     
    			nav5 = new TextField();
    			nav5.autoSize = "left";
    			nav5.selectable = false;
    			nav5.text = "Mon clip 5";
    			nav5.setTextFormat(nav_format);
     
     
    			//ajour des textes dans les movieClips
    			mc1.addChild(nav1);
    			mc2.addChild(nav2);
    			mc3.addChild(nav3);
    			mc4.addChild(nav4);
    			mc5.addChild(nav5);
     
    			}
     
    			private function over_handler1(e:Event){
    				trace('over');
    				nav1.setTextFormat(over_format);
    			}
    			private function over_handler2(e:Event){
    				trace('over');
    				nav2.setTextFormat(over_format);
    			}
    			private function over_handler3(e:Event){
    				trace('over');
    				nav3.setTextFormat(over_format);
    			}
    			private function over_handler4(e:Event){
    				trace('over');
    				nav4.setTextFormat(over_format);
    			}
    			private function over_handler5(e:Event){
    				trace('over');
    				nav5.setTextFormat(over_format);
    			}
     
    			private function out_handler1(e:Event){
    				trace('out');
    				nav1.setTextFormat(nav_format);
    			}
    			private function out_handler2(e:Event){
    				trace('out');
    				nav2.setTextFormat(nav_format);
    			}
    			private function out_handler3(e:Event){
    				trace('out');
    				nav3.setTextFormat(nav_format);
    			}
    			private function out_handler4(e:Event){
    				trace('out');
    				nav4.setTextFormat(nav_format);
    			}
    			private function out_handler5(e:Event){
    				trace('out');
    				nav5.setTextFormat(nav_format);
    			}
     
    		}
    	}
    et voici mon code optimisé (qui ne marche pas )
    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
     
    package{
    	import flash.display.MovieClip;
    	import flash.display.*;
    	import flash.text.*;
    	import flash.events.*;
     
    	public class nav_Clips extends MovieClip{
     
    		public var nav1:TextField;
    		public var nav2:TextField;
    		public var nav3:TextField;
    		public var nav4:TextField;
    		public var nav5:TextField;
    		public var nav_format:TextFormat;
    		public var over_format:TextFormat;
     
    		public var A:int;
    		const i:int = 12;
    		const j:int = 465;
     
     
     
     
    		public function nav_Clips(){
    			mc1.x = j;
    			mc1.y = 280;
    			mc1.addEventListener(MouseEvent.MOUSE_OVER, over_handler1);
    			mc1.addEventListener(MouseEvent.MOUSE_OUT, out_handler1);
    			this.addChild(mc1);
    			for (A=2; A=5; A++){
    				 var 'mc'+A:MovieClip = new MovieClip();
    				'mc'+A.addEventListener(MouseEvent.MOUSE_OVER, 'over_handler'+A);
    				'mc'+A.addEventListener(MouseEvent.MOUSE_OUT, 'out_handler'+A);
    				this.addChild('mc'+A);
     
    				'nav'+A = new TextField();
    				'nav'+A.selectable = false;
    				'nav'+A.autoSize = "left";
    				'nav'+A.text = "Movie Clip"+A;
    				'nav'+A.setTextFormat(nav_format);
    				'mc'+A.addChild('nav'+A);
     
    				function 'over_handler'+A(e:Event){
    				trace('over');
    				'nav'+A.setTextFormat(over_format);
    				}
    				function out_handler+A(e:Event){
    				trace('out');
    				'nav'+A.setTextFormat(nav_format);
    				}
    				A++;
     
    			}
    		}
     
     
    			/******************** Formatage du texte ***********************/
    			nav_format = new TextFormat;
    			nav_format.color = 0x000000;
    			nav_format.bold = true;
    			nav_format.font = 'Arial';
    			nav_format.size = 12;
     
    			over_format = new TextFormat;
    			over_format.color = 0xffffff;
    			over_format.bold = true;
    			over_format.font = 'Arial';
    			over_format.size = 12;
     
     
     
    		}
    	}
    Ce code me renvoir les 6 erreurs suivantes :
    (ligne 31) 1084: Syntax error: expecting identifier before mc.
    (ligne 43) 1084: Syntax error: expecting identifier before over_handler.
    (ligne 43) 1084: Syntax error: expecting leftparen before leftbrace.
    (ligne 43) 1084: Syntax error: expecting identifier before leftbrace.
    (ligne 43) 1084: Syntax error: expecting rightparen before leftbrace.
    (ligne 47) 1084: Syntax error: expecting leftparen before plus.

    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 273
    Points : 110
    Points
    110
    Par défaut
    bonjour ;
    a mon avis je pourrais te conseiller de travailler avec les tableaux du type (class ARRAY) a deux dimenssions;en ce qui me concerne; je tente aussi dans cette piste pour certains de mes codes, de part la rigeure;( tu interviendra sur tes eléments definis,et conditions ;et par la méme occasion,pouvoir boucler a l'interieur. pour sa mise en oeuvre,il y a beaucoup de tutaux;qui pourront t'aider,et ainsi avoir moins de lignes.
    quand je regarde ton code, cela est faisable, prend un tutaux sur la class ARRAY; et retrousse tes manches..a tres bientot.

Discussions similaires

  1. Optimisation code avec une boucle For
    Par latour500 dans le forum jQuery
    Réponses: 7
    Dernier message: 11/04/2014, 15h02
  2. améliorer mon code avec une boucle
    Par hotdogFRANCE dans le forum C#
    Réponses: 4
    Dernier message: 29/01/2011, 17h35
  3. [MySQL] optimiser mon code (faire une boucle)
    Par cFranssen dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/12/2010, 10h10
  4. Remplir mon arrayList avec une boucle for?
    Par kolann dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/11/2010, 12h04
  5. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23

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