begin process at 2012 02 07 05:40:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Menu & navigation

 > TREE AVEC RECHERCHE POUR AFFICHER UN XML.

TREE AVEC RECHERCHE POUR AFFICHER UN XML.


 Information sur la source

Note :
9,75 / 10 - par 12 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Menu & navigation Niveau :Initié Date de création :30/05/2005 Vu / téléchargé :10 368 / 2 066

Auteur : SuperDevy

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

En plein développement du site communautaire wiki.media-box.net, on inclus le dictionnaire ActionScript. Voici donc un Arbre, utilisant le composant Tree de Flash MX 2004 pro affichant la structure d'un fichier XML.

J'ai aussi créé une fonction permettant d'afficher uniquement les noeuds dont le nom contient un mot entré par l'utilisateur.

Source

  • /**
  • * Classe com.wikimb.TreeDoc
  • *
  • * Auteur: SuperDevy ( www.tibulle.com )
  • * Version: alpha 1.0
  • * Date: 29 mai 2005
  • * Flash MX 2004 pro requis
  • *
  • * Classe applicative crée pour le wiki media-box.
  • * Trois composants doivent être déposés : Tree, TextInput, CheckBox.
  • *
  • **/
  • import mx.controls.Tree
  • import mx.controls.TextInput
  • import mx.controls.CheckBox
  • class com.wikimb.TreeDoc
  • {
  • public var datasXML:XML;
  • public var searchXML:XML;
  • public var tree:Tree;
  • public var input:TextInput;
  • public var checkbox:CheckBox;
  • public var onSelect:Function;
  • //---o Constructeur
  • public function TreeDoc (tree:Tree, input:TextInput, checkbox:CheckBox)
  • {
  • //---< Enregistrement des composants
  • this.tree = tree;
  • this.input = input;
  • this.checkbox = checkbox;
  • //---< Accessibilité
  • input.tabIndex = 0;
  • checkbox.tabIndex = 1;
  • tree.tabIndex = 2;
  • input._accProps.name = "Recherche";
  • //---< Alignement
  • resize();
  • Stage.align = "TL";
  • Stage.scaleMode = "noScale";
  • }
  • //---o Initialisation une fois le chargement effectué
  • public function initialize (Void) :Void
  • {
  • trace("Initialisation");
  • var local = this;
  • //---< Tree (Liste)
  • tree.dataProvider = datasXML.cloneNode(true);
  • var event_tree:Object = new Object();
  • event_tree.change = function () {
  • var item:XMLNode = local.tree.selectedNode;
  • if (!item.hasChildNodes()) {
  • local.onSelect(item);
  • }
  • }
  • tree.addEventListener("change", event_tree);
  • //---< TextInbox (Recherche)
  • var event_input:Object = new Object();
  • event_input.enter = function () {
  • local.search(local.input.text);
  • }
  • event_input.change = function () {
  • if (local.checkbox.selected) {
  • local.search(local.input.text);
  • }
  • }
  • input.addEventListener("enter", event_input);
  • input.addEventListener("change", event_input);
  • //---< Stage (Redimentionnement)
  • var event_stage:Object = new Object();
  • event_stage.onResize = function () {
  • local.resize();
  • }
  • Stage.addListener(event_stage);
  • }
  • //---o Chargement des données XML
  • function load (url:String) :Void
  • {
  • var local = this;
  • datasXML = new XML();
  • datasXML.ignoreWhite = true;
  • datasXML.onLoad = function() {
  • trace("Chargement terminé");
  • local.initialize();
  • }
  • datasXML.load(url);
  • }
  • //---o Recherche (initialisation)
  • public function search (text:String) :Void
  • {
  • trace("Recherche pour le mot " + text);
  • var t = getTimer();
  • var local = this;
  • if (text!="") {
  • local.searchXML = new XML();
  • var addNode = function (child) {
  • local.searchXML.appendChild(child.cloneNode(false));
  • };
  • rec_search(datasXML, text, addNode);
  • tree.dataProvider = local.searchXML;
  • } else {
  • local.searchXML = null;
  • tree.dataProvider = local.datasXML.cloneNode(true);
  • }
  • trace("Temps de la recherche " + (getTimer()-t) + " ms");
  • }
  • //---o Recherche (exploration récursive)
  • private function rec_search (node:XMLNode, text:String, action:Function) :Void
  • {
  • var childs = node.childNodes;
  • var i:Number = 0;
  • while (childs[i]!=undefined) {
  • if (childs[i].hasChildNodes()) {
  • rec_search(childs[i], text, action);
  • } else {
  • if (containText(childs[i].attributes.label, text)) {
  • action(childs[i]);
  • }
  • }
  • i++;
  • }
  • }
  • //---o Regarde si un mot est présent dans une phrase.
  • public function containText (sentence:String, word:String) :Boolean
  • {
  • return (sentence.toLowerCase().split(word.toLowerCase(), 2).length > 1);
  • }
  • //---o Redimentionnement pour coller aux bords
  • public function resize (Void) :Void
  • {
  • trace("Redimentionnement");
  • this.tree.setSize(Stage.width, Stage.height-24);
  • this.input.setSize(Stage.width-22, 22);
  • }
  • }
  • // ---> by SuperDevy <---
/**
 * Classe com.wikimb.TreeDoc
 * 
 * Auteur: SuperDevy ( www.tibulle.com )
 * Version: alpha 1.0
 * Date: 29 mai 2005
 * Flash MX 2004 pro requis
 * 
 * Classe applicative crée pour le wiki media-box.
 * Trois composants doivent être déposés : Tree, TextInput, CheckBox.
 * 
 **/

import mx.controls.Tree
import mx.controls.TextInput
import mx.controls.CheckBox

class com.wikimb.TreeDoc
{
	public var datasXML:XML;
	public var searchXML:XML;
	
	public var tree:Tree;
	public var input:TextInput;
	public var checkbox:CheckBox;
	
	public var onSelect:Function;


//---o  Constructeur

	public function TreeDoc (tree:Tree, input:TextInput, checkbox:CheckBox)
	{
	//---<  Enregistrement des composants
		this.tree     = tree;
		this.input    = input;
		this.checkbox = checkbox;

	//---<  Accessibilité
		input.tabIndex    = 0;
		checkbox.tabIndex = 1;
		tree.tabIndex     = 2;
		
		input._accProps.name = "Recherche";

	//---<  Alignement
		resize();
		Stage.align = "TL";
		Stage.scaleMode = "noScale";
	}


//---o  Initialisation une fois le chargement effectué

	public function initialize (Void) :Void
	{
		trace("Initialisation");
		var local = this;
	
	//---<  Tree (Liste)
		tree.dataProvider = datasXML.cloneNode(true);
		var event_tree:Object = new Object();
		event_tree.change = function () {
			var item:XMLNode = local.tree.selectedNode;
			if (!item.hasChildNodes()) {
				local.onSelect(item);
			}
		}
		tree.addEventListener("change", event_tree);

	//---<  TextInbox (Recherche)
		var event_input:Object = new Object();
		event_input.enter = function () {
			local.search(local.input.text);
		}
		event_input.change = function () {
			if (local.checkbox.selected) {
				local.search(local.input.text);
			}
		}
		input.addEventListener("enter", event_input);
		input.addEventListener("change", event_input);

	//---<  Stage (Redimentionnement)
		var event_stage:Object = new Object();
		event_stage.onResize = function () {
			local.resize();
		}
		Stage.addListener(event_stage);
	}


//---o  Chargement des données XML

	function load (url:String) :Void
	{
		var local = this;
		datasXML = new XML();
		datasXML.ignoreWhite = true;
		datasXML.onLoad = function() {
			trace("Chargement terminé");
			local.initialize();
		}
		datasXML.load(url);
	}


//---o  Recherche (initialisation)

	public function search (text:String) :Void
	{
		trace("Recherche pour le mot " + text);
		var t = getTimer();
		var local = this;
		
		if (text!="") {
			local.searchXML = new XML();
			
			var addNode = function (child) {
				local.searchXML.appendChild(child.cloneNode(false));
			};
			rec_search(datasXML, text, addNode);
			tree.dataProvider = local.searchXML;
		} else {
			local.searchXML = null;
			tree.dataProvider = local.datasXML.cloneNode(true);
		}
		
		trace("Temps de la recherche " + (getTimer()-t) + " ms");
	}


//---o  Recherche (exploration récursive)

	private function rec_search (node:XMLNode, text:String, action:Function) :Void
	{
		var childs = node.childNodes;
		var i:Number = 0;
		while (childs[i]!=undefined) {
			if (childs[i].hasChildNodes()) {
				rec_search(childs[i], text, action);
			} else {
				if (containText(childs[i].attributes.label, text)) {
					action(childs[i]);
				}
			}
			i++;
		}
	}


//---o  Regarde si un mot est présent dans une phrase.

	public function containText (sentence:String, word:String) :Boolean
	{
		return (sentence.toLowerCase().split(word.toLowerCase(), 2).length > 1);
	}


//---o  Redimentionnement pour coller aux bords

	public function resize (Void) :Void
	{
		trace("Redimentionnement");
		this.tree.setSize(Stage.width, Stage.height-24);
		this.input.setSize(Stage.width-22, 22);
	}

}

//				---> by SuperDevy <---

 Conclusion

Source à paufiner...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip RETARDER L'EXECUTION D'UNE FONCTION
Source avec Zip COMPOSANTS POUR NON-PROGAMMEUR
Source avec Zip VOITURE INTELLIGENTE :: OPTIMISATION DE TRAJECTOIRE
Source avec Zip Source avec une capture BONNE TENUE DE ROUTE POUR CES VOITURES.
FONCTIONS MATHEMATIQUES

 Sources de la même categorie

Source avec Zip CLASS IMAGE ET IMAGEEVENT par top30
Source avec Zip Source avec une capture MENU DÉFILANT par m1le
Source avec Zip Source avec une capture MENU SIMPLE STYLE IPHONE par frazeks1989
Source avec Zip Source avec une capture MENUS DÉROULANT XML par Speedy321
Source avec Zip MENU RETATION par habibcode

Commentaires et avis

Commentaire de Mafassure le 30/05/2005 17:45:08 administrateur CS

de la balle !!!
t'as developpé ca tout seul !!!! en tout cas quel talent ;O)
j'adore la function de recherche

t'as source gagnerai à etre un poil plus commenté syntaxe AS2 oblige

pour la note juste un ptit 10 désolé


PS : qu'utilise tu pour editer le dico en XML ?

Commentaire de elmagico le 11/06/2005 03:18:47

Très beaux scripte, surtout la partie sur la recherche dans un noeud xml ...
Je travail sur un projet avec datagrid et dataset et une fonction de recherche avec choix dans qu'elle noued ...
Je suis au point d'arriver a faire une recherche d'equivalence ( blabla == blala (pour tout le monde :d)) uniquement, et meme pas encore la selection de noeud ...
C'est pourquoi t'as source va m'étre d'une grand utilité ... Mais pour ca faudrais que je comprenne le fonctionement des class ...
Tu aurais des bonnes sources en doc ou tut pour m'aider a apprendre un peut la création des classes ?
Merci.

Commentaire de SuperDevy le 11/06/2005 12:15:41

Oui :
http://wiki.media-box.net/tutoriaux/flash/introduction_aux_class
http://wiki.media-box.net/tutoriaux/flash/introduction_aux_class2

Content que ça te soit utile.

Commentaire de elmagico le 22/06/2005 18:32:57

Encore merci pour ces deux liens ... Ils m'ont été fort utiles, et le forum/site en lui meme aussi! Merci ;)

Commentaire de romalafrite le 13/07/2005 17:38:30

vraiment excellent, suggestion : faire le développement du dossier lorsque l'on clique sur le dossier et non sur la fleche...

Commentaire de caraffucciu le 09/11/2005 18:49:07

Pourrais tu me dire comment faire pour que lorsqu'on clique sur une node.. celle ci charge un swf sur la scène central...
si c'est trop long je me contenterai d'un lien... merci...

Commentaire de CISUM Records le 07/05/2006 17:52:20

Vraiment magnifique : 10/10

Commentaire de thomasthomas le 19/03/2007 18:51:28

Voila j'utilise ce code mais comme dictionnaire mais je n'arrive pas à aller à la ligne, si la definition d'un mots faire 3 ou 4 ligne de suite sur mon xml, lorsque je le visualise il n'y a qu'une phrase coupé.

Si qlq un a la variable qui permet cela je lui en serait TRES reconnaissant !

Commentaire de suburbanality le 04/10/2007 11:51:30 10/10

TOP ! 10/10

Juste une question qui va peut être vous paraitre bête mais comment faire pointer les rubriques vers un lien exterieur ?

Commentaire de jojoo le 13/08/2008 13:41:59

c'est quoi "tree"?

Commentaire de tempusus le 13/08/2008 14:56:45 administrateur CS 10/10

très belle source, bien documentée.

Commentaire de vegetalain le 29/12/2008 12:26:38

Super bô. Est-il possible d'afficher une image pour chaque contenu de dossier? Si on clique sur le premier "fichier" du dossier "A", afficher une image pour illustrer etc... ?

Commentaire de vegetalain le 16/01/2009 11:10:09 10/10

punaise j'y reviens à cette source, elle est top !!

Commentaire de tristancoindet le 19/06/2009 12:31:36 10/10

Félicitation :

Bonjour, même si le code date un peu (2005) il reste très utile comme en témoigne les messages qui datent, eux, de 2009. Pour ma part, je ne suis pas développeur professionnel, et mes questions ne sont pas au niveau ,je tente ma chance quand même...

Question :

Comme plusieurs internautes je souhaiterais savoir comment intégrer des liens à un n½ud, ou éventuellement des animations type chargement de swf sur la scène principale...

Contexte :

J'ai Flash CS3, mais le code fonctionne très bien si on on édite le fla en As2 et player 7...

En faisant mes excuses de ne pas pouvoir pour le moment contribuer à l'amélioration de ce code,

Bonne continuation à tous,

Tristan

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,624 sec (4)

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