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

Flex Discussion :

Comment développez une application avec le Framework mate


Sujet :

Flex

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Comment développez une application avec le Framework mate
    Bonjour,

    Je me suis mis à Flex il y a pas trop longtemps et j'en suis très content.

    Je développe actuellement une petite application avec le framework mate mais quelques notions m'échappent encore (je ne sais pas si c'est lié au framework ou a AS3).

    Si une âme généreuse connaissant ce framework pourrait me contacter afin de pouvoir me répondre à quelques questions, cela serait vraiment génial.

    Désolé si ce n'est pas le bon forum pour poser cette question.

    Merci !!!

  2. #2
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Salut,

    et pourquoi ne pas poser directement tes questions ici ?? c'est fait pour ca! d'une part ca te permet d'avoir plus d'avis et en plus tu partages tes réponses et interrogations avec la communauté

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Je vais essayé de faire court et compréhensif (c'est pas gagné )

    Tout d'abord je rappel le contexte :

    L'application que je suis en train de faire permet de centraliser les parties d'un célèbre jeu de rôle papier (pas de pub )

    J'ai un écran qui affiche les informations d'un personnage (son nom, son level, etc....) dont ses labels déclenche l'ouverture d'un popup lors du click (grâce au composant PopUpManager). Cet écran s'appelle PersonnageView.mxml


    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
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas 
    	xmlns:mx="http://www.adobe.com/2006/mxml" 
    	xmlns:mate="http://mate.asfusion.com/"
     
    	width="685" height="98"
     
    	creationComplete="chargementPersonnage()" color="#e0e0e0">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
    			import mx.core.Application;
    			import mx.managers.PopUpManager;
     
    			import itmon.events.PjEvent;
    			import itmon.views.PopupClasseView;
     
    			import itmon.vos.Classe;
    			import itmon.vos.Pj;
    			import itmon.vos.Race;
     
    			[Bindable]
    			public var personnageJoueurConnecte:Pj;
     
    			[Bindable]
    			public var classeJoueurConnecte:Classe;
     
    			[Bindable]
    			public var raceJoueurConnecte:Race;
     
    			// methode lancee a l'initialisation permettant de 
    			// charger le personnage
    			private function chargementPersonnage():void{
    				// generation de l'event
    				recupererPjConnecteDispatcher.generateEvent({
    					pjId:Application.application.pjId
    				});
    			}
     
    			// methode permettant d'afficher le popup de personnage du joueur connecte
    			private function afficherPopupPersonnage():void{
    				var popup:PopupPersonnageView = PopupPersonnageView(PopUpManager.createPopUp(this, PopupPersonnageView, true));
     
    				popup.x = 85;
    				popup.y = 75;
     
    				popup.classeSelected = classeJoueurConnecte.classeId;
    				popup.pjSelected = personnageJoueurConnecte.pjId;
    				popup.raceSelected = raceJoueurConnecte.raceId;
    			}
     
    			// methode permettant d'afficher le popup de classe du joueur connecte
    			private function afficherPopupClasse():void{
    				var popup:PopupClasseView = PopupClasseView(PopUpManager.createPopUp(this, PopupClasseView, true));
     
    				popup.x = 85;
    				popup.y = 75;
     
    				popup.classeSelected = classeJoueurConnecte.classeId;
    			}
     
    			// methode permettant d'afficher le popup de race du joueur connecte
    			private function afficherPopupRace():void{
    				var popup:PopupRaceView = PopupRaceView(PopUpManager.createPopUp(this, PopupRaceView, true));
     
    				popup.x = 85;
    				popup.y = 75;
     
    				popup.raceSelected = raceJoueurConnecte.raceId;
    			}
     
    			private function miseAJourProgressBarPersonnageJoueur(result:Object):void{
    				// progressBar action
    				pjJoueurProgressBarAction.maximum = personnageJoueurConnecte.pjActionDepart;
    				pjJoueurProgressBarAction.setProgress(personnageJoueurConnecte.pjActionActuel, personnageJoueurConnecte.pjActionDepart);
     
    				// progressBar xp
    				pjJoueurProgressBarXp.maximum = personnageJoueurConnecte.pjXpDepart;
    				pjJoueurProgressBarXp.setProgress(personnageJoueurConnecte.pjXpActuel, personnageJoueurConnecte.pjXpDepart);
     
    				// progressBar vie
    				pjJoueurProgressBarVie.maximum = personnageJoueurConnecte.pjVieDepart;
    				pjJoueurProgressBarVie.setProgress(personnageJoueurConnecte.pjVieActuel, personnageJoueurConnecte.pjVieDepart);
     
    				// progressBar mana
    				pjJoueurProgressBarMana.maximum = personnageJoueurConnecte.pjManaDepart;
    				pjJoueurProgressBarMana.setProgress(personnageJoueurConnecte.pjManaActuel, personnageJoueurConnecte.pjManaDepart);
     
    				// progressBar fureur
    				pjJoueurProgressBarFureur.maximum = personnageJoueurConnecte.pjFureurDepart;
    				pjJoueurProgressBarFureur.setProgress(personnageJoueurConnecte.pjFureurActuel, personnageJoueurConnecte.pjFureurDepart);
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Image
    		id="pjJoueurImage" 
    		x="10" y="10" 
    		width="78" height="78" 
    		source="{personnageJoueurConnecte.pjImage}"/>
     
    	<mx:Label
    		id="pjJoueurNom" 
    		text="Nom : {personnageJoueurConnecte.pjNom}"
    		x="96" y="10" 
    		width="196" height="20" 
    		useHandCursor="true"
    		buttonMode="true"
    		mouseChildren="false"
    		click="afficherPopupPersonnage()"/>
     
    	<mx:Label
    		id="pjJoueurLevel"
    		text="Level : {personnageJoueurConnecte.pjLevel}"
    		x="96" y="26"
    		width="196" height="20"/>
     
    	<mx:Label 
    		id="pjJoueurRace"
    		text="Race : {raceJoueurConnecte.raceNom}"
    		toolTip="Afficher le détail de la race"
    		x="96" y="42" 
    		width="196" height="20"
    		useHandCursor="true"
    		buttonMode="true"
    		mouseChildren="false"
    		click="afficherPopupRace()"/>
     
    	<mx:Label
    		id="pjJoueurClasse"
    		text="Classe : {classeJoueurConnecte.classeNom}"
    		toolTip="Afficher le détail de la classe" 
    		x="96" y="58" 
    		width="196" height="20" 
    		useHandCursor="true"
    		buttonMode="true"
    		mouseChildren="false"
    		click="afficherPopupClasse()"/>
     
    	<mx:ProgressBar 
    		id="pjJoueurProgressBarAction"
    		x="316" y="15"
    		width="170" height="8" 
    		label="" 
    		minimum="0" maximum="100"
    		themeColor="#800080"
    		direction="right"
    		mode="manual"
    		toolTip="Action : {Math.round((personnageJoueurConnecte.pjActionActuel)*100)/personnageJoueurConnecte.pjActionDepart} %"/>
     
    	<mx:ProgressBar 
    		id="pjJoueurProgressBarXp"
    		x="316" y="28"
    		width="170" height="8" 
    		label="" 
    		minimum="0" maximum="100"
    		themeColor="#FFD700"
    		direction="right"
    		mode="manual"
    		toolTip="Expérience : {Math.round((personnageJoueurConnecte.pjXpActuel)*100)/personnageJoueurConnecte.pjXpDepart} %"/>
     
    	<mx:ProgressBar 
    		id="pjJoueurProgressBarVie"
    		x="316" y="41"
    		width="170" height="8" 
    		label="" 
    		minimum="0" maximum="100"
    		themeColor="#8B0000"
    		direction="right"
    		mode="manual"
    		toolTip="Vie : {Math.round((personnageJoueurConnecte.pjVieActuel)*100)/personnageJoueurConnecte.pjVieDepart} %"/>
     
    	<mx:ProgressBar 
    		id="pjJoueurProgressBarMana"
    		x="316" y="54"
    		width="170" height="8" 
    		label="" 
    		minimum="0" maximum="100"
    		themeColor="#000096"
    		direction="right"
    		mode="manual"
    		toolTip="Mana : {Math.round((personnageJoueurConnecte.pjManaActuel)*100)/personnageJoueurConnecte.pjManaDepart} %"/>
     
    	<mx:ProgressBar 
    		id="pjJoueurProgressBarFureur"
    		x="316" y="67"
    		width="170" height="8" 
    		label="" 
    		minimum="0" maximum="100"
    		themeColor="#1B6F00"
    		direction="right"
    		mode="manual"
    		toolTip="Fureur : {Math.round((personnageJoueurConnecte.pjFureurActuel)*100)/personnageJoueurConnecte.pjFureurDepart} %"/>
     
    	<!-- Listeners and Dispatchers ______________________________________________________________________ -->
    	<mate:Dispatcher 
    		id="recupererPjConnecteDispatcher" 
    		generator="{PjEvent}" 
    		type="{PjEvent.RECUPERER_PJ_CONNECTE}">
     
    		<mate:ResponseHandler 
    			type="afficherPersonnageResultResponse" 
    			response="miseAJourProgressBarPersonnageJoueur(event.personnageResult)" />
    	</mate:Dispatcher>	
    </mx:Canvas>
    L'un de ses popup, qui est déclenché lors du click sur le nom du personnage, contient les informations du personnage. Ce popup est appelé PopupPersonnageView.mxml

    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
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow 
    	xmlns:mx="http://www.adobe.com/2006/mxml" 
    	xmlns:mate="http://mate.asfusion.com/" 
     
    	layout="absolute" 
    	width="520" height="310"
    	borderAlpha="1"
    	borderColor="#575757"
    	backgroundColor="#999999"
    	headerColors="#E0E0E0"
     
    	title="{pjRecupere.pjNom}"
    	showCloseButton="true"
    	close="closeHandler(event)"
     
    	creationComplete="chargementPersonnagePopup()">
     
    	<mx:Script>
    		<![CDATA[
    			import com.asfusion.mate.events.ResponseEvent;
    			import mx.controls.Alert;
    			import mx.events.CloseEvent;
    			import mx.managers.PopUpManager;
     
    			import itmon.events.ClasseEvent;
    			import itmon.events.PjEvent;
    			import itmon.events.RaceEvent;
    			import itmon.vos.Classe;
    			import itmon.vos.Pj;
    			import itmon.vos.Race;
     
    			[Bindable]
    			public var pjRecupere:Pj;
     
    			[Bindable]
    			public var classeRecuperee:Classe;
     
    			[Bindable]
    			public var raceRecuperee:Race;
     
    			public var classeSelected:int;
    			public var pjSelected:int;
    			public var raceSelected:int;
     
    			// methode lancee a l'initialisation permmetant de 
    			// charger le personnage
    			public function chargementPersonnagePopup():void{
    				recupererClasseSelectionneDispatcher.generateEvent({
    					classeId:classeSelected
    				})
     
    				recupererPjSelectionneDispatcher.generateEvent({
    					/*pjId:pjSelected*/
    					pjId:2
    				})
     
    				recupererRaceSelectionneDispatcher.generateEvent({
    					raceId:raceSelected
    				})
    			}
     
    			private function getSexeNom(sexe:String):String{
    				if(sexe == 'm'){
    					return 'Masculin';
    				}
    				else if(sexe == 'f'){
    					return 'Féminin';
    				}
    				else{
    					return 'Inconnu';
    				}
    			}
     
    			private function closeHandler(event:CloseEvent):void{
    				PopUpManager.removePopUp(this);
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Image 
    		id="pjRecupereImage" 
    		x="10" y="10" 
    		width="78" height="78" 
    		source="{pjRecupere.pjImage}"/>
     
    	<mx:TabNavigator x="96" y="10" width="396" height="250">
    		<mx:Canvas 
    			label="Description" 
    			width="100%" height="100%">
    			<mx:Label 
    				text="Sexe:"
    				x="10" y="10" 
    				width="75" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Label 
    				id="pjSexe"
    				text="{getSexeNom(pjRecupere.pjSexe)}"
    				x="93" y="10" 
    				width="113"/>
    			<mx:Label 
    				text="Race :"
    				x="10" y="36" 
    				width="75" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Label 
    				id="pjRace"
    				text="{raceRecuperee.raceNom}"
    				x="93" y="36" 
    				width="113"/>
    			<mx:Label 
    				text="Ville :"
    				x="10" y="62" 
    				width="75" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Label 
    				id="pjVille"
    				x="93" y="62" 
    				width="113"/>
    			<mx:Label 
    				text="Description :"
    				x="10" y="88" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Text 
    				id="pjDescription"
    				text="{pjRecupere.pjDescription}"
    				x="95" y="88" 
    				width="289" height="119"/>
    			<mx:Label 
    				text="Level :"
    				x="214" y="10" 
    				width="51" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Label 
    				id="pjLevel"
    				text="{pjRecupere.pjLevel}"
    				x="273" y="10" 
    				width="111"/>
    			<mx:Label 
    				text="Classe :"
    				x="214" y="36" 
    				textAlign="right" 
    				fontWeight="bold" 
    				width="51"/>
    			<mx:Label 
    				id="pjClasse"
    				text="{classeRecuperee.classeNom}"
    				x="273" y="36" 
    				width="111"/>
    			<mx:Label 
    				text="Clan :"
    				x="214" y="62" 
    				width="51" 
    				textAlign="right" 
    				fontWeight="bold"/>
    			<mx:Label 
    				id="pjClan"
    				x="273" y="62" 
    				width="111"/>
     
    		</mx:Canvas>
    		<mx:Canvas 
    			label="Caractéristiques" 
    			width="100%" height="100%">
    		</mx:Canvas>
    	</mx:TabNavigator>
     
    	<!-- Listeners and Dispatchers ______________________________________________________________________ -->
    	<mate:Dispatcher 
    		id="recupererPjSelectionneDispatcher" 
    		generator="{PjEvent}" 
    		type="{PjEvent.RECUPERER_PJ_SELECTIONNE}">
    	</mate:Dispatcher>
    	<mate:Dispatcher 
    		id="recupererClasseSelectionneDispatcher" 
    		generator="{ClasseEvent}" 
    		type="{ClasseEvent.RECUPERER_CLASSE}">
    	</mate:Dispatcher>
    	<mate:Dispatcher 
    		id="recupererRaceSelectionneDispatcher" 
    		generator="{RaceEvent}" 
    		type="{RaceEvent.RECUPERER_RACE}">
    	</mate:Dispatcher>
     
    </mx:TitleWindow>
    C'est 2 fichiers sont pilotés par les fichiers NavigationMap.mxml (permettant de gérer les évènements et les appels vers amfphp) et le fichier ModelMap.mxml (permettant d'injecter une variable dans un fichier mxml)
    ainsi que le fichier PjManager qui lui va lire le résultat de l'évenement et renseigner les données de sa variable personnage (qui sera ensuite injectée à la vue PersonnageView.mxml grâce au fichier ModelMap)

    NavigatorMap
    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
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
     
    <?xml version="1.0" encoding="utf-8"?>
    <EventMap 
    	xmlns:mx="http://www.adobe.com/2006/mxml" 
    	xmlns="http://mate.asfusion.com/">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.core.Application;
    			import mx.events.*;
    			import itmon.events.*;
    			import itmon.business.*;
    		]]>
    	</mx:Script>
     
    	<Debugger level="{Debugger.ALL}" />
     
    	<!-- FlexEvent.PREINITIALIZE __________________________________________________________________ -->
    	<EventHandlers type="{FlexEvent.PREINITIALIZE}">
    		<ObjectBuilder generator="{LoginManager}" constructorArguments="{scope.dispatcher}" />
    	</EventHandlers>
     
    	<!-- LoginEvent.LOGIN _________________________________________________________________________ -->
    	<EventHandlers type="{LoginEvent.LOGIN}" debug="true">
        	<RemoteObjectInvoker 
        		destination="amfphp" 
        		source="itmon.ItmonService" 
    			method="recupererCompteParIdentifiantCrypte"
    			arguments="{[event.identifiant1, event.identifiant2]}" 
    			showBusyCursor="true"
    			debug="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{LoginManager}" 
    					method="login" 
    					arguments="{resultObject}"/>
     
    				<ResponseAnnouncer type="loginResultResponse">
    		            <Properties loginResult="{resultObject}"/>
    		        </ResponseAnnouncer>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    	<!-- PjEvent.RECUPERER_PJ_CONNECTE _________________________________________________________________________ -->
    	<EventHandlers type="{PjEvent.RECUPERER_PJ_CONNECTE}" debug="true">
        	<RemoteObjectInvoker 
        		destination="amfphp" 
        		source="itmon.ItmonService" 
    			method="recupererPjInformationParPjId"
    			arguments="{event.pjId}" 
    			showBusyCursor="false"
    			debug="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{PjManager}" 
    					method="enregistrerPj" 
    					arguments="{resultObject}"/>
    				<MethodInvoker 
    					generator="{ClasseManager}" 
    					method="enregistrerClasse" 
    					arguments="{resultObject}"/>	
    				<MethodInvoker 
    					generator="{RaceManager}" 
    					method="enregistrerRace" 
    					arguments="{resultObject}"/>
     
    				<ResponseAnnouncer type="afficherPersonnageResultResponse">
    		            <Properties personnageResult="{resultObject}"/>
    		        </ResponseAnnouncer>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    	<!-- PjEvent.RECUPERER_PJ_SELECTIONNE _________________________________________________________________________ -->
    	<EventHandlers type="{PjEvent.RECUPERER_PJ_SELECTIONNE}" debug="true">
        	<RemoteObjectInvoker 
        		destination="amfphp" 
        		source="itmon.ItmonService" 
    			method="recupererPjInformationParPjId"
    			arguments="{event.pjId}" 
    			showBusyCursor="false"
    			debug="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{PjManager}" 
    					method="enregistrerPj" 
    					arguments="{resultObject}"/>
    				<MethodInvoker 
    					generator="{ClasseManager}" 
    					method="enregistrerClasse" 
    					arguments="{resultObject}"/>	
    				<MethodInvoker 
    					generator="{RaceManager}" 
    					method="enregistrerRace" 
    					arguments="{resultObject}"/>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    	<!-- VilleEvent.RECUPERER_VILLE_PAR_PJ _________________________________________________________________________ -->
    	<EventHandlers type="{VilleEvent.RECUPERER_VILLE_PAR_PJ}">
    		<RemoteObjectInvoker 
    			destination="amfphp" 
    			source="itmon.ItmonService"
    			method="recupererVilleInformationParPjId" 
    			arguments="{event.pjId}" 
    			showBusyCursor="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{InstanceManager}" 
    					method="verifierPjDansInstance" 
    					arguments="{resultObject}"/>
    				<MethodInvoker 
    					generator="{VilleManager}" 
    					method="enregistrerVille" 
    					arguments="{resultObject}"/>
    				<MethodInvoker 
    					generator="{RegionManager}" 
    					method="enregistrerRegion" 
    					arguments="{resultObject}"/>
    				<MethodInvoker 
    					generator="{PaysManager}" 
    					method="enregistrerPays" 
    					arguments="{resultObject}"/>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    	<!-- ClasseEvent.RECUPERER_CLASSE _________________________________________________________________________ -->
    	<EventHandlers type="{ClasseEvent.RECUPERER_CLASSE}">
    		<RemoteObjectInvoker 
    			destination="amfphp" 
    			source="itmon.ItmonService"
    			method="recupererClasseInformationParClasseId" 
    			arguments="{event.classeId}" 
    			showBusyCursor="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{ClasseManager}" 
    					method="enregistrerClasse" 
    					arguments="{resultObject}"/>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    	<!-- RaceEvent.RECUPERER_RACE _________________________________________________________________________ -->
    	<EventHandlers type="{RaceEvent.RECUPERER_RACE}">
    		<RemoteObjectInvoker 
    			destination="amfphp" 
    			source="itmon.ItmonService"
    			method="recupererRaceInformationParRaceId" 
    			arguments="{event.raceId}" 
    			showBusyCursor="true">
     
    			<resultHandlers>
    				<MethodInvoker 
    					generator="{RaceManager}" 
    					method="enregistrerRace" 
    					arguments="{resultObject}"/>
    			</resultHandlers>
     
    			<faultHandlers>
    				<MethodInvoker 
    					generator="{ErreurSqlManager}" 
    					method="afficherErreurSql" 
    					arguments="{event.fault}"/>
    			</faultHandlers>
     
    		</RemoteObjectInvoker>
    	</EventHandlers>
     
    </EventMap>
    ModelMap
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <EventMap 
    	xmlns:mx="http://www.adobe.com/2006/mxml" 
    	xmlns="http://mate.asfusion.com/">
     
    	<mx:Script>
    		<![CDATA[
    			import itmon.business.*;
    			import itmon.views.*;
    		]]>
    	</mx:Script>
     
    	<!-- Personnage View __________________________________________________________________ -->
    	<Injectors target="{PersonnageView}">
    		<PropertyInjector 
    			targetKey="personnageJoueurConnecte" 
    			source="{PjManager}" 
    			sourceKey="personnage" />
    	</Injectors>
    	<Injectors target="{PersonnageView}">
    		<PropertyInjector 
    			targetKey="classeJoueurConnecte" 
    			source="{ClasseManager}" 
    			sourceKey="classe" />
    	</Injectors>
    	<Injectors target="{PersonnageView}">
    		<PropertyInjector 
    			targetKey="raceJoueurConnecte" 
    			source="{RaceManager}" 
    			sourceKey="race" />
    	</Injectors>
     
    	<!-- Ville View _______________________________________________________________________ -->
    	<Injectors target="{VilleView}">
    		<PropertyInjector 
    			targetKey="villeRecup" 
    			source="{VilleManager}" 
    			sourceKey="ville" />
    	</Injectors>
    	<Injectors target="{VilleView}">
    		<PropertyInjector 
    			targetKey="regionRecup" 
    			source="{RegionManager}" 
    			sourceKey="region" />
    	</Injectors>
    	<Injectors target="{VilleView}">
    		<PropertyInjector 
    			targetKey="paysRecup" 
    			source="{PaysManager}" 
    			sourceKey="pays" />
    	</Injectors>
     
    	<!-- PopupPersonnage View _________________________________________________________________ -->
    	<Injectors target="{PopupPersonnageView}">
    		<PropertyInjector 
    			targetKey="pjRecupere" 
    			source="{PjManager}" 
    			sourceKey="personnage" />
    	</Injectors>
    	<Injectors target="{PopupPersonnageView}">
    		<PropertyInjector 
    			targetKey="classeRecuperee" 
    			source="{ClasseManager}" 
    			sourceKey="classe" />
    	</Injectors>
    	<Injectors target="{PopupPersonnageView}">
    		<PropertyInjector 
    			targetKey="raceRecuperee" 
    			source="{RaceManager}" 
    			sourceKey="race" />
    	</Injectors>
     
    	<!-- PopupClasse View _________________________________________________________________ -->
    	<Injectors target="{PopupClasseView}">
    		<PropertyInjector 
    			targetKey="classeRecuperee" 
    			source="{ClasseManager}" 
    			sourceKey="classe" />
    	</Injectors>
     
    	<!-- PopupRace View _________________________________________________________________ -->
    	<Injectors target="{PopupRaceView}">
    		<PropertyInjector 
    			targetKey="raceRecuperee" 
    			source="{RaceManager}" 
    			sourceKey="race" />
    	</Injectors>
     
    </EventMap>
    PjManager :
    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
     
    package itmon.business
    {
    	import itmon.vos.Pj;
     
    	import mx.core.Application;
     
    	public class PjManager
    	{
    		[Bindable]
    		public var personnage:Pj = new Pj();
     
     
    		public function enregistrerPj(resultat:Object):void{
    			if(resultat != null){
    				personnage.pjImage = Application.application.itmonServer + 'img/pj/' + resultat.pjId + '.jpg';
     
    				personnage.pjId = resultat.pjId;
    				personnage.utilisateurId = resultat.utilisateurId;
    				personnage.raceId = resultat.raceId;
    				personnage.villeId = resultat.villeId;
    				personnage.classeId = resultat.classeId;
    				personnage.pjSexe = resultat.pjSexe;
    				personnage.pjNom = resultat.pjNom;
    				personnage.pjDescription = resultat.pjDescription;
    				personnage.pjLevel = resultat.pjLevel;
     
    				personnage.pjActionActuel = resultat.pjPointAction;
    				personnage.pjXpActuel = resultat.pjXpActuel;
    				personnage.pjXpDepart = resultat.pjXpDepart;
    				personnage.pjVieActuel = resultat.pjVieActuel;
    				personnage.pjVieDepart = resultat.pjVieDepart;
    				personnage.pjManaActuel = resultat.pjManaActuel;
    				personnage.pjManaDepart = resultat.pjManaDepart;
    				personnage.pjFureurActuel = resultat.pjFureurActuel;
    				personnage.pjFureurDepart = resultat.pjFureurDepart;
     
    				if(personnage.pjManaDepart == 0){
    					personnage.pjManaDepart = 1;
    				}
     
    				if(personnage.pjFureurDepart == 0){
    					personnage.pjFureurDepart = 1;
    				}
     
    				personnage.pjAgilite = resultat.pjAgilite;
    				personnage.pjConstitution = resultat.pjConstitution;
    				personnage.pjForce = resultat.pjForce;
    				personnage.pjInitiative = resultat.pjInitiative;
    				personnage.pjIntelligence = resultat.pjIntelligence;
     
    				personnage.pjOr = resultat.pjOr;
    				personnage.pjOrCoffre = resultat.pjOrCoffre;
    			}
    			else{
    				personnage.pjImage = '';
     
    				personnage.pjId = 0;
    				personnage.utilisateurId = 0;
    				personnage.raceId = 0;
    				personnage.villeId = 0;
    				personnage.classeId = 0;
    				personnage.pjSexe = '';
    				personnage.pjNom = '';
    				personnage.pjDescription = "";
    				personnage.pjLevel = 0;
     
    				personnage.pjActionActuel = 0;
    				personnage.pjXpActuel = 0;
    				personnage.pjXpDepart = 1;
    				personnage.pjVieActuel = 0;
    				personnage.pjVieDepart = 1;
    				personnage.pjManaActuel = 0;
    				personnage.pjManaDepart = 1;
    				personnage.pjFureurActuel = 0;
    				personnage.pjFureurDepart = 1;
     
    				personnage.pjAgilite = 0;
    				personnage.pjConstitution = 0;
    				personnage.pjForce = 0;
    				personnage.pjInitiative = 0;
    				personnage.pjIntelligence = 0;
     
    				personnage.pjOr = 0;
    				personnage.pjOrCoffre = 0;
    			}
    		}
    	}
    }
    Déroulement du code :

    Lorsque j'arrive sur la vue 'PersonnageView.mxml', l'évènement "chargementPersonnage()" est déclenché dont le résultat est ensuite envoyé vers le fichier PjManager qui va regarder le résultat
    et renseigner les attributs de sa variable personnage (instance d'une classe Pj).
    Grâce à l'injecteur définit dans le ModelMap, cette modification est répercutée sur la vue PersonnageView.mxml

    Jusque là ça fonctionne impécable.

    Le problème survient quand je clique que le label qui déclenche l'ouverture du popup (ainsi qu'a la fin de se creation le déclenchement de la fonction "chargementPersonnagePopup()") et que le résultat de cet event appelle
    la fonction "enregistrerPj" du fichier "PjManager" alors les données du premier écran sont écrasés !

    On peut voir le résultat sur les 2 screenshots du début dont la première fonction récupère les données par apport à l'id 1 et le 2ieme par apport à l'id 2 (le premier renvoi "Gozer le Gosérien" comme personnage
    et le deuxième "Test Pj"

    Question :

    Pourquoi lorsque j'exécute le deuxième dispatcher (celui de la fonction chargementPersonnagePopup), les données du premier écran sont-ils écrasés alors que pour moi, les 2 variables sont différentes (première écran
    ->'personnageJoueurConnecte', 2ième écran->'pjRecupere') ?

    Je n'arrive pas a saisir la notion du pourquoi ces variables se chevauchent.

    Si vous avez besoin d'autres informations , n'hésitez pas !
    Et surtout merci pour votre aide !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Je ne suis pas certain que ça réponde à ta question, mais…

    Je crois que par défaut, les Injecteurs remplacent le contenu d'une propriété pour toutes les classes du type demandé. Il se peut donc qu'un des événements remplace les données précédemment sélectionnées.

    Pour corriger cela, il y a une option des Injectors ("id", je crois) qui permet de n'injecter que dans une certaine classe, en utilisant l'id de la classe.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/05/2009, 11h22
  2. Comment lier une application avec une librairie statique ?
    Par michel_bbm dans le forum Visual C++
    Réponses: 7
    Dernier message: 08/04/2008, 14h49
  3. comment créer une application avec des switchs
    Par abderrahim_05 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/12/2007, 19h07
  4. Comment structurer une application avec des multiples versions ?
    Par Worldofdada dans le forum Windows Forms
    Réponses: 5
    Dernier message: 31/05/2007, 10h52
  5. Réponses: 2
    Dernier message: 23/05/2006, 02h40

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