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

Flash Discussion :

[FLASH MX2004] Problème avec un datagrid & xml


Sujet :

Flash

  1. #61
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Au fait, pour faire le bouton qui permet de tout afficher, je suis obliger de refaire une fonction click, puisque je ne peux pas rajouter une lettre ou un nombre à l'ancienne fonction !

    C'est cela ?

    Céd.

  2. #62
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    Tout à fait
    Si tu veux utiliser une autre fonction de rappel de l'événement que la fonction click des autres boutons tu peux utiliser la classe mx.utils.Delegate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import mx.utils.Delegate ;
     
    var action = function (ev) {
       trace (this + " >> " + ev.type + " : " + ev.target) ;
    }
     
    monBouton.addEventListener("click", Delegate.create(this, action)) ;
    Cette classe est apparue dans Flashmx2004 7.2....
    Elle permet de déléguer à une autre fonction un événement par exemple ... et de choisir en + le scope dans la fonction (cad ce que va renvoyer le this....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var f:Function = Delegate.create( scope , function ) :
    EKA+

  3. #63
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Salut Eka+

    Cette fonction me permet de cloner ma fonction click en lui rajoutant des nouveaux paramètres ? Je vois pas en fait comment cela va modifier le fait que lorsque le bouton est cliquer la liste complète des sociétés est appliquer dans le datagrid !

    Qu'est ce que ce scope ?

    Merci !

    Céd.

  4. #64
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    je te le dis... quand tu as une fonction attachée à un objet dedans le this correspond à l'objet auquel elle est attachée par défaut...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    bt.onPress = function () {
        trace(this) ; // ici this correspond à _level0.bt 
    }
    Donc le scope c'est bt dans l'exemple au dessus... maintenant si je veux controller le scope. et avoir dans le this un autre objet (celui que je veux...) et bien là je peux utiliser Delegate !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import mx.utils.Delegate ;
     
    var o = {} ;
    o.toString = function () { return "myObject" } ;
     
    var action = function () {
        trace (this) ;
    }
     
    bt.onPress = Delegate.create(o , action) ;
    Ici la fonction create va me créer un Function qui aura pour valeur la valeur de la fonction action mais en + ... le scope dedans ne sera pas _level0 ou _level0.bt mais o ! Dans ton panneau de trace avec la méthode toString tu vas avoir "myObject" quand tu vas presser sur le bouton.. et pas _level0.bt ....

    Du coup tu peux cibler aussi l'évément d'un composant de type EventDispatcher sur un écouteur n'importe lequel (un listener!) et vu qu'une fonction c'est un objet... tu peux cibler directement comme écouteur de l'événement une fonction qui en + aura le scope que tu désires... pratique

    EKA+

  5. #65
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    OKi, don je peux, a priori, arrêtes moi si je me trompes, copier la fonciton onLoad pour donner la même valeur et ainsi afficher toutes les sociétés ?

    Je crois que je me suis embrouiller avec tous les termes que tu m'as donné !

    Cédric.

  6. #66
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    Euh ... oui tu peux mais si j'étais toi je ferais autrement alors...
    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
     
    import mx.utils.Delegate ;
     
    var x = new XML() ;
    x.ignoreWhite = true ;
     
    this.checkXML = function (success) {
         if (success) {
               trace (x) ; 
               // ici traitement sur le xml : x
         } else {
               trace ("error") ;
         }
    }
     
    // ici je faire une délégation sur la fonction checkXML de l'événement onLoad 
    x.onLoad = Delegate.create(this, this.checkXML) ;
    x.load(url) ; // url l'url de ton xml 
     
    // .. plus loin 
    bt.addEventListener("click", Delegate.create(this, checkXML)) ;
    Voilà Tu utilises la même méthode pour le onLoad et le composant Button... et tu n'utilises pas le scope this directement... mais tu utilises la variable x dans checkXML pour parcourir ton xml et le parser dans ton tableau ! ... quand on utilise une variable déclarée en dehors d'une fonction on dit qu'on travaille avec une "portée de variable"

    EKA+

  7. #67
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    lors, j'ai tester ta méthode:

    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
    var x = new XML(); //création de l'objet XML 
    x.ignoreWhite=true; //ignorer les sauts de ligne 
    this.checkXML = function(success) 
    	{ 
          	if (!success) 
    			{ 
          			trace ("error !") ; 
          			return ; 
       			} 
     
    		var data2:Array = new Array(); // création du tableau data 
       		var node:Array = this.firstChild.childNodes ;  // création du tableau ayant les noeuds 
       		var l:Number = node.length ; // longeur des noeuds du fichier xml 
     
          	for (var i = 0; i < l ; i++) 
             	{ 
                   	var cur = node[i] ; // cur est la valeur courante de i 
                   	if (cur.nodeName == "partenaire") 
                   		{ 
                         	var subNode:Array = cur.childNodes ; 
                         	var item = {} ; 
                          	item.index = cur.attributes.index ; 
                          	var k:Number = subNode.length ; 
     
                      		for (var j:Number = 0 ; j<k ; j++) 
                         		{ 
                               		cur = subNode[j] ; 
                               		item[cur.nodeName] = cur.firstChild.nodeValue ; 
                             	} 
     
                      		data2.push(item); 
                      	} 
                } 
     
          	grid.dataProvider = data2 ; // injecter les données dans le modèle du tableau 
          	grid.sortItemsBy("raison") ; // tu peux trier ton tableau directement
       }
    x.onLoad = Delegate.create(this, this.checkXML);
    x.load("partenaire.xml");
     
    bt_liste.addEventListener("click", Delegate.create(this, checkXML));
    Et là, à la compilation, il me fait rien du tout, et me load rien dans le datagrid. Par contre, lorsque je clique sur le bouton a,b,c, etc... ça marche.

    Peut etre ais-je mal appliquer ta méthode, mais j'ai déroulé l'algorithme, et ça devrais etre bon quand même.

    Cédric.

  8. #68
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    Citation Envoyé par ekameleon
    Voilà Smile Tu utilises la même méthode pour le onLoad et le composant Button... et tu n'utilises pas le scope this directement... mais tu utilises la variable x dans checkXML pour parcourir ton xml et le parser dans ton tableau ! ... quand on utilise une variable déclarée en dehors d'une fonction on dit qu'on travaille avec une "portée de variable"
    je t'ai dit d'utiliser x (la variable) et pas this dans la fonction.. lis ce que j'écris, on dirait que tu fais un simple copié collé de ce que je te donne comme code et que tu prend pas le temps de lire ce qui est important :
    tu as laissé le this.firstChild.childNodes au début de la fonction au lieu de mettre x.firstchild....
    Forcément si tu lis pas mieux cela marche pas

    EKA+

  9. #69
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Tu es trop bon !



    Tu pratiques flash (enfin plutot l'actionscript) depuis combien de temps ?

    Cédric.

  10. #70
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    je développe sérieusement en AS depuis 5 ans je dirais... Même si je connais flash depuis + longtemps.

  11. #71
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Oki :d

    Tu sais quoi, grâce à toi, je me suis poussé à chercher et à fouiller dans le dico flash, et j'ai trouvé de part moi même et juste avec le dico lafonction pour écrire dans le presse papier (bon, je sais, c'est nul, amis bon )

    Par contre, lorsque je veux la mettre en place, y'a un soucie :

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    on(release)
    	{
    		var raison = ta_raison.text;
    		trace(raison);
    		var presse = System.setClipboard("yop " + raison + " end");
    		trace(presse);
    	}
    Ce code est sur le bouton de l'appli.

    Il me sors un truc : "yop undefined end" dans le presse papier !

    Pourquoi il ne me met pas l'intégralité du texte de du textarea raison = "ta_raison" ?

    Cédric.

  12. #72
    Membre chevronné Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Par défaut
    Hello
    1 - tu as du le comprendre mais il faut pas utiliser de on(...) mais des événements de bouton sur les Clips ou les Buttons directement sur le scénario....

    2 - le trace dans ta fonction release... sur raison il renvoi quoi ?

    3 - Dans l'aide de flash :
    setClipboard (System.setClipboard method)
    public static setClipboard(text:String) : Void
    le Void à la fin de la déclaration de la fonction signifie que la fonction ne renvoi rien.. donc cela n'a aucun sens de taper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var presse = .....
    Vu que dans tous les cas setClipboard ne renvoie rien ! c'est dans l'aide en lisant correctement l'explication.
    Pour le reste... fait un exemple en fla et montre.
    PS : si ta question découle d'une autre question que celle d'origine ... pense à faire un nouveau POST avec un titre explicite pour que les gens qui cherchent une info et qui passent derrière ne se perdent pas dans les méandres de ce post ...

    EKA+

  13. #73
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 45
    Par défaut
    Les méandres de ce post !

    PTDR !

    OKi, je fais un .fla d'exemple et je fais unn nouveau topic ! Je me celui là en résolu

    Cédric.

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [FLASH MX2004] Problème avec un clip vide
    Par vbcasimir dans le forum Flash
    Réponses: 5
    Dernier message: 10/02/2006, 15h06
  2. [FLASH MX2004] Problème avec d'incrémentation
    Par vbcasimir dans le forum Flash
    Réponses: 6
    Dernier message: 08/02/2006, 16h01
  3. [FLASH MX2004] Problème avec la couleur
    Par Garra dans le forum Flash
    Réponses: 2
    Dernier message: 16/01/2006, 17h23
  4. Réponses: 5
    Dernier message: 14/01/2006, 20h30
  5. [FLASH MX2004] Problème avec fscommand("exec", ...
    Par djo.mos dans le forum Flash
    Réponses: 10
    Dernier message: 24/08/2005, 07h49

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