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 :

Class dans un SWF externe incompatible avec tree [Flex4]


Sujet :

Flex

  1. #1
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Points : 149
    Points
    149
    Par défaut Class dans un SWF externe incompatible avec tree
    Bonjour,

    Je viens vous soumettre un problème compliqué...

    J'ai mis en place un système de chargement de classe à partir d'un SWF externe (comme détaillé ici).

    J'arrive à utiliser cette classe pour la source de mes images.
    Je n'arrive pas à utiliser cette classe pour les icône de mon Tree.

    Un problème survient dans le TreeItemRenderer ligne 389.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var iconClass:Class = _listData.icon;
    Je ne comprend pas le problème car ma class CNodeRelais est de type Class et un type class est demandé.

    Si quelqu'un avait déjà rencontré le problème par hasard ou souhaitait se pencher sur le mien... il aura toute ma gratitude !

    TypeError: Error #1034: Echec de la contrainte de type*: conversion de CNodeRelais@10c95421 en mx.core.IFlexDisplayObject impossible.
    at mx.controls.treeClasses::TreeItemRenderer/commitProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\controls\treeClasses\TreeItemRenderer.as:389]
    at mx.core::UIComponent/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:7772]
    at mx.managers::LayoutManager/validateClient()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:863]
    at mx.controls::List/http://www.adobe.com/2006/flex/mx/internal::setupRendererFromData()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\controls\List.as:1706]
    at mx.controls::List/commitProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\controls\List.as:895]
    at mx.controls::Tree/commitProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\controls\Tree.as:1189]
    at mx.core::UIComponent/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:7772]
    at mx.managers::LayoutManager/validateProperties()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:572]
    at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:730]
    at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,

    as-tu un petit peu de code à nous soumettre stp ?
    Juste avec le tuto que tu as suivi, ça va être compliqué de te venir en aide
    N'oubliez pas avant de poster :

  3. #3
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Points : 149
    Points
    149
    Par défaut
    En fait j'utilise quasi tel quel la classe donnée dans le tuto.

    Une fois initialisée, le SWF chargé, j'utilise getDefinition(className:String):Class pour récupérer toutes mes Class que j'appliquerais ensuite en source à mes images.

    Ca fonctionne bien pour la plupart de mes images, sauf pour celles de mon Tree (à travers iconFunction).

    Initialisation de mon tree
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <mx:Tree id="_tree" 
    	showRoot="true" 
    	width="100%" height="100%"
    	dataProvider="{_dataProvider}"
    	labelField="label"
    	iconFunction="iconFunctionClb"
    />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function iconFunctionClb(item:Object) : Class
    {
    	var iconClass:Class = null;
    	iconClass = FlashLib.getDefinition("symbol");
    }
    J'arrive au problème décrit ci-dessus à l'exécution...

  4. #4
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Points : 149
    Points
    149
    Par défaut
    Tient on vient de me donner une piste :

    Redéfinir mon treeItemRenderer car apparemment la Class que je récupère n'implémente pas bien IFlexDisplayObject.

    J'ai donc recopié la classe et j'essaye de la modifier mais c'est dur...

    D'autant plus dur que je ne comprend pas pourquoi la classe implémente bien IFlexDisplayObject si elle est embedded mais ne l'implémente pas si je la charge dynamiquement :s.

  5. #5
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Points : 149
    Points
    149
    Par défaut
    Bon alors d'un développeur d'Adobe, lorsqu'une Class est embedded, elle est mise immédiatement dans un IFlexDisplayObject.

    Avec la méthode si dessus, j'arrive à récupérer un DisplayObject (par getInstance).
    J'ai redéfinit mon TreeItemRenderer en remplaçant icon:IFlexDisplayObject par iconisplayObject. J'ai du modifier un peu le code original pour permettre la transition.

    Il n'y a qu'un icon.setActualSize(icon.width, icon.height); que j'ai du commenter (ne trouvant pas d'équivalent).

    J'ai encore un problème : lorsque je survole une ligne de mon arbre, l'icône reprend sa taille d'origine alors que je l'avais retaillée :s.

  6. #6
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Points : 149
    Points
    149
    Par défaut
    Bon voila mon problème est résolu...

    En fait je rescallais mes icones à chaque affichage mais avec ma méthode, il ne faut plus le faire qu'une seule et unique fois.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/04/2014, 14h58
  2. swf avec api externe dans un swf qui ce lance pas
    Par marcuscircus dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 02/01/2010, 14h06
  3. [FLASH MX2004] Preload swf externe dans header
    Par nonoteam dans le forum Flash
    Réponses: 2
    Dernier message: 07/01/2006, 14h33
  4. Réponses: 9
    Dernier message: 25/09/2005, 16h33
  5. Réponses: 4
    Dernier message: 03/08/2005, 09h47

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