begin process at 2012 05 28 00:02:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

"XML et recursivité" ou comment peter un cable en 10 min


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

"XML et recursivité" ou comment peter un cable en 10 min

lundi 27 juin 2005 à 14:45:54 | "XML et recursivité" ou comment peter un cable en 10 min

phentex

Bonjour à tous,
cet aprem, Flash me fait péter un plomb.

Le contexte (je bosse sous FlashMX2004Pro 7.2 (à jour quoi...) )
J'ai un fichier XML balo qui porte le doux nom de "test.xml", donc voici le contenu:
<racine>
    <bruce>
        <tsoin1/>
        <tsoin2/>
    </bruce>
    <kate>
        <tsoin1/>
        <tsoin2/>
    </kate>
    <rodolf>
        <tsoin1/>
        <tsoin2/>
    </rodolf>
</racine>


(Au départ j'ai un fichier xml bien plus complexe que ca mais j'ai préférer simplifier, d'autant que le probleme reste présent)

J'ai également ma fonction onLoad pour l'objet XML 'donnees' obtenu par parsing qui fonctionne impec.

Mon problème :
Je veux lister le contenu de mon fichier xml de facon RECURSIVE
(qui dit arborescence, dit circulation récursive, ca va de soit...)

Mais: Flash semble allergique au récursif...

j'ai le code suivant:
- au sain de l'onLoad de mon objet xml je fait appelle à la fonction f1 qui prend en parametres l'objet xml 'donnees'.

f1 = function ( ObjetXML )
{
    rec ( ObjetXML , "");
}


- rec est la fonction recursive proprement dite qui va explorer branche par branche l'arborescence xml et l'afficher dans la console de sortie texte de Flash.

rec = function ( ObjetXML , retrait )
{
    trace ( retrait + ObjetXML.nodeName );
    if ( ObjetXML.childNodes.length != 0 )
    {
       for ( i=0 ; i<ObjetXML.childNodes.length ; i++ )
       {
          rec ( ObjetXML.childNodes[i] , retrait + "  " );
       }
    }
}


En sortie, j'obtiens :
null
    racine
       bruce
          tsoin1
          tsoin2


et c'est tout !!

Pourquoi n'ai je pas :
null
    racine
       bruce
          tsoin1
          tsoin2
       kate
          tsoin1
          tsoin2
       rodolf
          tsoin1
          tsoin2


En gros, une fois la fonction terminée, Flash n'est pas foutu de retourner dans la fonction appelante...

PLEAAZE HELP ME

(dans flash, on définit au départ uniquement une classe à partir de son constructeur. Je me demande si la variable i dans ma fonction rec serait pas considérée comme une variable de classe, dans ce cas pas étonnant que foute le souk au niveau des incrémentations dans les fonctions rec appelante.... qu'en pensez vous ?)

lundi 27 juin 2005 à 15:39:25 | Re : "XML et recursivité" ou comment peter un cable en 10 min

phentex

UP svp, ayez pitié de moi
je suis sur un gros projet et chui bloqué à cause de cette#{~[{`|[{||~[{~|

lundi 27 juin 2005 à 17:29:27 | Re : "XML et recursivité" ou comment peter un cable en 10 min

goldenboy68

Comment Flash va savoir qu'elle doit être récursive ta fonction?? f1 = function ( ObjetXML ) { rec ( ObjetXML , ""); } ...tu l'appelles qu'une fois...donc forcément, elle fait qu'une boucle "for" ajoute un truc du genre: f1 = function ( ObjetXML ) { for(i=0;i
lundi 27 juin 2005 à 17:52:42 | Re : "XML et recursivité" ou comment peter un cable en 10 min

bonsmou

XML.toString();
mardi 28 juin 2005 à 00:03:50 | Re : "XML et recursivité" ou comment peter un cable en 10 min

SuperDevy

Membre Club
Voici un exemple d'exploration recursive d'un objet XML :
[ Lien ]

Voir la fonction : _buildNodesList

SuperDevy, c la !
mardi 28 juin 2005 à 09:59:16 | Re : "XML et recursivité" ou comment peter un cable en 10 min

phentex

je suis exaspéré, je viens de taper un message de 30 lignes, et firefox a planté...

Samy >> je pige pas du tout ta réponse, la fonction rec est précisément la fonction récursive, donc je vois pas en quoi dans f1 (qui est juste la fonction d'amorce et d'initialisation de la récursion) devrait avoir un for en plus...

SuperDevy >> J'ai regardé ton code, mais j'ai vraiment du mal à comprendre l'algo. (ca fait seulement 2 semaines que je suis dans flash...)

Ce que je cherche à faire en fait c'est au final un menu dans flash avec une certaine profondeur de sous-menus, correspondant à une branche bien précise de mon fichier xml. J'utilise la récursivité parce que je ne sais pas quelle est la profondeur de l'arborescence xml va se baser mon menu graphique. D'ailleurs, pour filtrer et indiquer à la fonction récursive quelle branche de sous-noeud explorer ou ne pas explorer, chaque noeud possède (ou non) un attribut HasSubSection="yes" pour lui indiquer qu'il doit explorer la branche du noeud. Si cet attribut n'est pas présent, la fonction récursive n'explore pas la branche du noeud.

Le code de ma fonction rec est donc: (simplement pour afficher ce qui sera plus tard un menu graphique)

rec = function(ObjetXML , retrait)
{
    for ( i=0 ; i<ObjetXML.childNodes.length ; i++ )
    {
         trace( retrait + ObjetXML.childNodes[i].nodeName )
         if (ObjetXML.childNodes[i].attributes.HasSubSection == "yes") rec(ObjetXML.childNodes[i] , "  ");
    }
}

Ma principale frustration, outre le fait que ca fait 2 jours que je traine la dessus et ca commence sérieusement à me casser les #&~@, c'est POURQUOI mon fichu code de marche pas ? pourquoi est ce que la recursivité creuse dans l'arborescence, mais ne retourne pas au noeud parent (cf les données affichées dans mon premier post)

Merci d'avance
bon je reviens, je vais me chercher un tabouret et une corde... oh nan tiens, ma ceinture fera l'affaire.

cordialement
mardi 28 juin 2005 à 10:00:43 | Re : "XML et recursivité" ou comment peter un cable en 10 min

phentex

oups c'est rec(ObjetXML.childNodes[i] , "  " + retrait);
pas
rec(ObjetXML.childNodes[i] , "  ");
(m'enfin on s'en fout un peu en fait, c'est juste pour l'ethétique)
mardi 28 juin 2005 à 10:10:33 | Re : "XML et recursivité" ou comment peter un cable en 10 min

goldenboy68

Désolé...j'avais pas vu l'appel à rec dans rec...j'avais pas les yeux ouverts! Mais dans le code de SuperDevy...tu devrais trouver ton bonheur!

@+! Samy

mardi 28 juin 2005 à 11:34:24 | Re : "XML et recursivité" ou comment peter un cable en 10 min

phentex

pas grave

par contre dans le code de SuperDevi ya pas mal de choses que je pige pas.

private static function _buildNodesList (fromXML:XMLNode, toArray:Array) :Void
{
var n = fromXML.childNodes.length;
for (var i=0; i<n; i++)
{
if (fromXML.childNodes[i].hasChildNodes())
{
arguments.callee(fromXML.childNodes[i], toArray);
}
else
{
toArray.push(fromXML.childNodes[i]);
}
}
}
je pige pas la ligne arguments.callee(fromXML.childNodes[i], toArray);
c'est quoi arguments.callee ?
il est ou l'appel récursif à _buildNodesList ??

Merci bcp d'avance
jeudi 5 janvier 2006 à 13:37:48 | Re : "XML et recursivité" ou comment peter un cable en 10 min

lilyvirus

j'ai le meme souci tu as trouvé la solution?

1 2

Cette discussion est classée dans : fonction, flash, xml, rec, objetxml


Répondre à ce message

Sujets en rapport avec ce message

du XML dans une fonction [ par dorsey9 ] Bonjour à tous, Aprés deux jours de galère pour quelques chose de surement trés simple je vais m'en remettre à ceux qui savent ! je réalise un animat inserer video dans flash xml [ par alexabou ] Bonjour à tous!!!!! ben écoutez, j'ai un petit soucis avec un template que j'ai acheter tout fait. je voudrais le customiser et y ajouter des vidéos Gestion xml dans un site flash avec des movieclip [ par bantunani ] BobbyclarckBonjour, Je recherche des conseils, si ce n'est plus pour insérer un gestionaire XML à mon site flash afin gérer le contenu apparaissant'd AS3 + XML [ par dimass01 ] Bonjour, Je suis débutant en AS3 et je souhaiterai faire une carte de france avec des boutons pour chaque département. Le survol d'un bouton va perm Flash menu dynamique avec XML intégration swfaddress [ par marine34000 ] Bonjour à tous, Sur un de mes site, j'ai fait un menu flash qui appel un xml pour se constituer, le problème c'est que je voulais ajouter swfaddress photogallery flash-xml affichage description des images !! [ par bosseagle ] Bonjour à tous et merci d'avance à qui voudra me guider dans mon petit problème. J'affiche des images de ma PhotoGallery (Flash Xml)en choisissant dan chargement fichier xml via flash dans wordpress [ par gusd ] Bonjour à tous et merci d'avance de votre attention. Voilà mon problème(peut-être un peu hors sujet, mais je n'ai pas trouvé de réponse sur flashkod Calendrier evénmentiel flash as2 + XML : HELP [ par choupifou ] Bonjour, j'ai récupéré un calendrier flash [url=http://ctl.mc.maricopa.edu/_resources/helpdocs/workshops/flash_components/FlashXMLCalendar.html]ici[/u Chargement XML dans Flash (image,lien photo) [ par quinton75 ] Bonjour, Je voudrais automatiser l'intégration d'images de lien et de photo dans un fichier .fla via XML. En effet sur ma 1ere frame, j'ai 4 menus e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales