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 :

Même event mais signature différentes


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var e:DossierEvent = event as DossierEvent

  3. #3
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    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.

  4. #4
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    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 ???

  5. #5
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  6. #6
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    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...

  8. #8
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    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

  9. #9
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/03/2010, 09h55
  2. 2 pages avec 1 même liste mais fonctions différentes
    Par lesanglier dans le forum Configuration
    Réponses: 0
    Dernier message: 10/11/2009, 12h01
  3. Mêmes donnés mais résultats différents
    Par Chiwawa dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2009, 23h55
  4. Même exécutable mais comportement différent
    Par FabaCoeur dans le forum C
    Réponses: 12
    Dernier message: 01/02/2009, 22h04
  5. Réponses: 1
    Dernier message: 08/06/2008, 14h55

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