Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 27/05/2011, 10h49   #1
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
Par défaut Même event mais signature différentes

Bonjour,

J'ai petit problème bien embêtant, je charge un swf contenant un module à divers endroit d'une application. lors du premier chargement tout va bien, mais des que je rappelle une deuxieme fois le module tout mes "cast" de classe ne fonctionne plus.

code :
Code :
1
2
3
4
5
6
 
 if ( !DossierEvent(event).dossier ){
	if ( ! model.dossierRoot )
		model.dossierRoot = new   GroupNode("Root",0,Dossier.createRoot());
	parentDossier = model.dossierRoot.nodeData.data;
}
l'erreur :
Code :
1
2
 
conversion de ...controller.events::DossierEvent@2f754ce1 en ...controller.events.DossierEvent impossible.
L'event est bien le même. Je comprends ce qu'il se passe, lors du premier appel à l'event, il est référence dans mon appli général avec une signature bien spécifique, l'event à une signature différente et il considère que ce n'est pas le même event.
Je sais qu'il y a 2 solutions simple ( soit je charge mon swf dans un "ApplicationDomain" différents, soit je ne fait pas mes cast et attaque comme un bourrin mes attributs sur l'event).
Mais c'est 2 solutions ne convienne pas. la premiere enclave mon mondule, et la deuxieme est crade.

Si quelqu'un a une solution propre

merci d'avance
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h56   #2
Membre régulier
 
Homme
Ingénieur développement logiciels
Inscription : avril 2008
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2008
Messages : 75
Points : 70
Points : 70
Bonjour,

as-tu essayé de caster ton event avec la mot clé "as" ?
Quelque chose dans ce goût là :

Code :
var e:DossierEvent = event as DossierEvent
maxime_c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h07   #3
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
Oui c'est pareil, à part qu'a l'éxécution il n'y à pas l'erreur au moment du cast, mais au moment ou j'essaie de travailler sur les attribut puisque du coup mon event est null. Dans le cas de mon exemple, il ne peux réccupèrer dossier sur un object null.
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h12   #4
Membre confirmé
 
Avatar de samy2525
 
Inscription : janvier 2008
Messages : 249
Détails du profil
Informations personnelles :
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 249
Points : 266
Points : 266
Bonjour, j'avoue je ne comprends pas il ne peut pas caster un Objet TOTO en un autre Objet du même type ça m'a l'aire un peu bizarre. quand tu dispatch bien le même event

tu veux dire quoi pas ils ne contiennent pas la même signature ???
__________________
http://www.m-ataf.com (En cours de construction)
samy2525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h28   #5
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
En gros dans ma fonction c'est bien un DossierEvent qui est intercepté mais il considère que ce n'est pas un DossierEvent. Je pense que le GarbageCollector fait mal sont boulot, quand je construit ma popUp qui charge le swf la premiere fois, il référence l'event dans mon appli lorsque je détruit ma popUp, malgré un "unloadAndStop(true)" sur le swfLoader, je pense qu'il garde une référence de l'event quelque part et donc lorsque je rappelle ma popUp et recharge le swf, l'event est considéré comme différent.

Le problème est bien là, car si lors du chargement du swf, je lui donne un nouveau ApplicationDomain, je n'ai pas du tout le souci. mais si je fais ca je ne peux plus communiquer avec le reste de l'appli

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
				var projectUI:ProjectUIModule = ProjectUIModule( PopUpManager.createPopUp(this, ProjectUIModule,true));
				projectUI.width = uint(this.width * 0.9);
				projectUI.height = uint(this.height * 0.9);
				PopUpManager.centerPopUp(projectUI);
				PopUpControl.setPopUpControl(projectUI, Application.application as UIComponent );
 
//---------------------------------
				var newAppDomain:ApplicationDomain = new ApplicationDomain();
//---------------------------------
				projectUI.taskModule.loaderContext = new LoaderContext(false,newAppDomain );
				projectUI.taskModule.source = /*CommonModel.getInstance().session.serverURL+*/source;
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 11h51   #6
Membre confirmé
 
Avatar de samy2525
 
Inscription : janvier 2008
Messages : 249
Détails du profil
Informations personnelles :
Localisation : France, Hauts de Seine (Île de France)

Informations forums :
Inscription : janvier 2008
Messages : 249
Points : 266
Points : 266
Bon je pense qu'il faut mettre ta solution d'instancier un nouvel domaine pour la communication avec le reste de l'application, tu peux créer un singleton de type dispatchEvent

comme c'est un singleton tu as une et une seule référence dans ton application comme il hérite de EventDispatcher tu peux dispatcher et écouter des événement

maintenant pour la communication entre ta popup et le reste de ton application tu fais :

1 - tu rajoute ton singleton à ta pop up comme suit :
Code :
1
2
3
private notifieur : Notifieur = Notifieur.getInstance();
// dispâtch event
notifieur.dispatch(new Event) // à toi de voir
2 - Dans ton application tu rajoute le notifieur
Code :
1
2
3
private notifieur : Notifieur = Notifieur.getInstance();
 
notifieur.addEvenetListner(// surl'evenemtn que tu as dispatcher depuis ta pop up)
et la tu as une communication entre ta pop up et le reste de ton application

Samy
__________________
http://www.m-ataf.com (En cours de construction)
samy2525 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 12h13   #7
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
Si je spécifie un nouveau ApplicationDomain à mon Loader de SWF, la mécanique des singleton ne fonctionne pas, il créera 2 instances différentes pour le Notifieur.

Par contre je viens de penser que je pourrait peut-être utiliser une socket, la peut être que je pourrai faitre communiquer les SWF entre eux même dans des applicationDomain différents. je vais creuser la chose...
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 17h36   #8
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
Bon les sockets ne sont pas une solution qui conviendrais, donc je suis toujours bloqué. donc si quelqu'un pense à une piste n'hésité pas
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h45   #9
Membre habitué
 
Avatar de greatalain
 
Homme Alain Great
Développeur informatique
Inscription : novembre 2007
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Alain Great
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2007
Messages : 124
Points : 146
Points : 146
Bon ben j'ai résolu mon problème autrement, lors du chargement de mon SWF je lui donne comme applicationDomain le "ApplicationDomain.currentDomain". Cela m'amène d'autre problèmatique mais au moins celle là est résolue
greatalain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h59.


 
 
 
 
Partenaires

Hébergement Web