begin process at 2010 02 10 01:46:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > PARSER UN FICHIER TEXTE POUR EN EXTRAIRE DES VARIABLES

PARSER UN FICHIER TEXTE POUR EN EXTRAIRE DES VARIABLES


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :classe, parser, parsing, fichier texte Niveau :Initié Date de création :25/11/2007 Vu / téléchargé :6 634 / 286

Auteur : Girou

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


 Description

De quoi s’agit-il ?
D’une classe permettant de charger dynamiquement des variables ou constantes (bien que l’AS2 n’ait pas vraiment de constantes…) contenu dans un fichier texte et d’y accéder facilement via un appel à la classe AppliConfig.

Comment accéder aux valeurs chargées dynamiquement:
// Recherche d’une valeur
trace(AppliConfig.MY_STRING)
If(AppliConfig .MY_BOOLEAN1){
trace('La valeur de MY_BOOLEAN est true')
}
//Comme la classe est dynamique, l’assignation de nouvelles variables globales n’est pas un problème.
AppliConfig.UNE_NOUVELLE_VARIABLE="une valeur définie lors de l’exécution"
trace(AppliConfig.UNE_NOUVELLE_VARIAB LE)

Comment structurer le fichier de configuration :
Comme la plupart des fichiers .ini  (Voir le fichier exemple dans le zip)

; Fichier de configuration
[COULEURS]
COULEUR_BASE :0xff0000
COULEUR_ACTIVE :0xfffffff
[CLIP PERSO]
CLIP_PARAMS :{_x :100,_y :100,_alpha :50}

Quels sont les avantages de ce système ?
Il fonctionne aussi bien en ligne que hors ligne (en test direct sur votre ordinateur).
Il rassemble en un point central les données globales de votre application/animation, structuré d’une façon très simple à comprendre et à modifier
Il s’occupe seul de déterminer le type des variables créées
Il permet la création très simple d’objets compliqués
MON_ARRAY :["Une chaine de caractères",{_x :100,_y :100,_alpha :50},[1,2,3, 4]]
va créer un tableau accessible via AppliConfig.MON_ARRAY qui contiendra  3 lignes :
• AppliConfig.MON_ARRAY [0] : Une chaine de caractères
• AppliConfig.MON_ARRAY [1] : Un objet avec 3 pairs de clé/valeur
• AppliConfig.MON_ARRAY [2] : Un tableau de 4 lignes contenant chacune un nombre
Chaque élément du tableau pouvant être directement appelé via AppliConfig.MON_ARRAY[n]

Pourquoi ne pas stocker en dur les variables dans le script ?

Pour éviter de devoir recompiler à chaque fois l’application pour tester une nouvelle valeur, ce qui peut représenter un gain de temps pour les grosses applications.
Pour permettre la personnalisation rapide d’application (ou de portion d’application) sans devoir adapter le swf de base pour chaque cas.

Mais encore…

Imaginez que votre fichier de configuration est généré automatiquement via un script (php,asp,…) en fonction d’une base de données ou autre… ou selon un login/password
L’animation ou l’application sera personnalisée en fonction de l’utilisateur, en fonction d’une date,… enfin, tout ce qu’on peut imaginer.

Et les inconvénients ?

Cette méthode de travail n’est pas utile pour de petites animations ou application, elle va alourdir le travail de base (attente du chargement et de l’instanciation des variables, écouteur sur la classe AppliConfig)…
Cette méthode demande une plus grande préparation du travail, bien structurer ses applications, agir en fonction des variables, ce qui peut allonger le code…
Si vous définissez des variables static dans vos classes faisant référence aux valeurs contenues dans le fichier de configuration ces valeurs ne seront pas remplies

maClass{
static var COULEURCLIP=AppliConfig.COULEUR_BASE
trace(COULEUR CLIP) // retournera undefined

Mais cela est simplement contournable en réalisant une classe qui étend AppliConfig et qui va placer les valeurs static une fois les données chargées.

import net.graphit.Config.AppliConfig;
dynamic class MyAppliConfig extends AppliConfig
{
private static var _registred:Boolean=AppliConfig.register(MyAppliCon fig )
private function MyAppliConfig (){}

private static function onReady()
{
// Assignation des valeurs statiques
MA_CLASSE.COULEURCLIP=MyAppliConfig.CO ULEUR_BASE
// event dispatch pour prévenir l'application qu'on est prêt pour la suite
dispatchEvent({
type:"ConfigReady",
target:ConsoleConfig
});
}
}
N’hésitez pas à allonger la liste !!!

Source

  • // Voir classe dans le zip
  • // Utilisation :
  • import net.graphit.Config.AppliConfig
  • var _listener:Object=new Object()
  • _listener.ConfigReady=function(){
  • trace('Event Received')
  • // Suite de l'application
  • }
  • AppliConfig.addEventListener('ConfigReady',_listener)
  • AppliConfig.load('ConfigFile.ini')
  • stop()
// Voir classe dans le zip
// Utilisation :
import net.graphit.Config.AppliConfig

var _listener:Object=new Object()
_listener.ConfigReady=function(){
	trace('Event Received')
        // Suite de l'application
}
AppliConfig.addEventListener('ConfigReady',_listener)
AppliConfig.load('ConfigFile.ini')
stop()

 Conclusion

Classe compatible avec MTASC et pour ceux qui utilisent flashdevelop voici comment utiliser cette classe
dans votre classe toujourscompilée et ayany un point d'entrée (main)

class Application
{
function Application(){}
static function main(_mc:MovieClip)
{
// Loading configuration Datas
AppliConfig.addEventListener('ConfigReady' , mx.utils.Delegate.create(Application, ConfigReady));
AppliConfig.load('MyConfigFile.in i');
}

private static function ConfigReady()
{
trace('CONFIG IS READY, starting Application');
// suite de l'application
}
}

 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 Source avec une capture STAR-DECODER : TROUVEZ LE CODE !
FAIRE TOURNER UN TABLEAU (ARRAY)
Source avec Zip Source avec une capture SYSTEME DE VOTE FLASH - PHP / MYSQL
Source avec Zip CLASSE DYNAMICBAR UNE BARRE PARAMETRABLE SANS LES COMPOSANTS...

 Sources de la même categorie

Source avec Zip NAVIGATION DANS UN FICHIER XML par inaden
Source avec Zip Source avec une capture TWSCROLLBAR, UNE CLASSE DE SCROLLBAR SIMPLE ET PRATIQUE À UT... par Twinspirit
Source avec Zip Source avec une capture REBOND DE BALLON AVEC TWEEN par habibcode
Source avec Zip DIAPORAMA AS2 par ahmedhrbdj
Source avec Zip EXAMPLES DE TWEENS AS2 par rajas

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CLASSE AS3 MENU CONTEXTUEL par Orange73
Source avec Zip IMPORTSVG: UNE CLASSE QUI PERMET DE RETRACER DES SVG EN AS3 par Mansuz
Source avec Zip CLASSE PNGENCODER (AS3) par Blacknight91titi
Source avec Zip Source avec une capture GÉSTIONNAIRE DE CLASSE POUR LE TABLEAU NUMÉRIQUE INTERACTIF par barbidouille2
Source avec Zip Source avec une capture MENUS DÉROULANTS XML par Speedy321

Commentaires et avis

Commentaire de BananaTree le 26/11/2007 13:16:02

"charger dynamiquement des constantes" ?
...

Commentaire de Girou le 26/11/2007 15:12:23

Oui, je sais, ca parrait absurde comme cela !!!

J'utilise ceci pour parametrer la même application pour différents clients sans avoir à recompiler systématiquement l'application pour chaque client avec ses options à lui

Je me suis sans doute mal exprimé !

Commentaire de top30 le 30/11/2007 12:27:13

Oui mal expliqué :
Car en AS2 les "constantes" n'existent pas !
Se sont les variables statiques qui le sont considérées comme telle.
Etant des variables, elle peuvent être "settée".
Hors en AS3 les constantes de compilation existent. Et comme leurs noms l'indique
une fois compilée, elles sont inchangeable.
Exemple : Math.PI, qu'elle est l'interêt de changer sa valeur ???

Donc ne pas confondre variable de classe et constante.

Ceci dit tu devrais penser à l'XML !

Commentaire de Girou le 30/11/2007 14:23:46

Hello !

@BANANATREE & TOP30 :
Je sais bien que les constantes n'existent pas en AS2 -> voir la première phrase:
(bien que l'AS2 n'ait pas vraiment de constantes.)

@TOP30 : Pourquoi pas un XML :
- le fichier txt (ou ini dans mon cas) est plus leger (mais bon entre 1 ou 2 Ko la différence au chargement c'est pas énorme !!!)
- En passant par le XML on doit tout de même faire un parsing pour déterminer le typage des variables à instancier, le XML ne retourne que des valeurs de type String() si je ne souviens bien.
- J'ai fais ce choix surtout pour les 'mises à jour' online des valeurs
  Un champ de texte éditable sur la scene qui charge et affiche le fichier .ini
  On modifie simplement le contenu du champs de texte, on ajoute des sections, des commentaires, des VARIABLES (hé hé, ne buttons pas 2 fois sur la même pierre) dans un environement texte très simple.
  Un bouton 'save changes' qui envoi le contenu du champ de texte à un miniuscule script php qui réecrit le fichier .ini et on le tour est joué.

En passant par XML on se farci les appendchilds, nodeValue, XPAth ou XPathAPI pour rechercher les valeurs, des [CDATA[ pour les commentaires et gare au accents... Bref la manipulation et la mise à jour est nettement plus lourde.

@+
Girou

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

classe et méthode... [ par upyboobs ] est ce que quelqu'un serait capable de m'éclaircir sur la différence entre les casses et les méthodes et les objets... qd utiliser quoi, pourquoi... e Pourquoi je ne vois pas les changements reflétés [ par jekif ] Salut,j'ai un problème un peu chiant. J'ai un fla qui ne fait que créer une instance d'une classe X , qui elle affiche une image sur la scène. Enfin j Pleins de petites questions d'un débutant....HELP PLEASE!! [ par juju2chaussette ] Salut à tous,Je sui en stage info et je débute en Flash, je dois à partir récupérer les données d'un fichier XML et les afficher dans mon doc Flash : Programmation réseau avec Flash [ par naq2 ] Bonjour,J'aimerai faire de la programmation réseau à travers Flash... mais la seule classe qui s'y apparente un peu à cela est la classe XMLSocket mai problème avec la classe XML [ par pomelo ] et bien j'utilise XML.load pour reprendre du XML évidemment mais je l'ai pas mit dans un setInterval mais plustôt dans une boucle fait en image flash Instance de movieclip dans une classe AS2 [ par Clemto ] bonjour les gensVoila, pour faire de la 3d, je trace donc des faces, mais il y a quelques bug sur la profondeur et l'affichage de ces faces. Je voudra Parser php flash et apostrophe.... [ par Ku2 ] Bonjour à tous chuis nouveau dans le coin.Mon problème est lié a un fichier texte au format html chargé dans flash via un parser PHP. Mesapostrophe ne Pb d'accès à un membre de classe AS2 [ par francisek ] Salut,Je commence en AS2 donc c'est peut être tout bête.Voilà l'énoncé de mon problème:J'ai créé une classe avec un membre XML. Dans le gestionnaire o parser du xml [ par BananaTree ] slt tt le monde.voila, l'idée c'est que je voudrais parser les noeuds enfants d'un xml dans un tableau, mas ça marche pas.//-------------------------- classe et #include [ par squam ] bonjour,Je commence tout juste a utiliser les classe en en as 2.Voila j'ai une "librairie de fonctions" diverse que je voudrais utiliser pour la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

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

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