CHARGEMENT DE VARIABLES EXTERNES AVEC LOADVARS SIMPLEMENT

romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 - 19 mai 2006 à 01:05
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 10 oct. 2009 à 21:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37612-chargement-de-variables-externes-avec-loadvars-simplement

stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
10 oct. 2009 à 21:30
Tu dis n'importe quoi.
Déjà je n'ai pas fait d'erreur. Ensuite tu viens de poster un code complètement HS : J'ai dis dans mon message précèdent que Loader et URLLoader étaient bien différents. Tu viens d'utiliser Loader qui est un élément graphique permettant de charger des swf, images et de les afficher à l'écran... J'ai utilisé, et c'est ce que tu dois faire, un objet URLLoader, qui te permet de charger du contenu sous forme de texte, variables, ou binaire via des BytesArrays, dans ton cas c'est le mode texte (par Default) dont tu a besoin.

Stef.
archynet Messages postés 8 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 10 octobre 2009
10 oct. 2009 à 19:27
Salut Stef,

Merci pour l'aide, ça m'a aidé à m'y mettre, du coup j'ai regardé les sources par ci par là car je captais pas trop ou tu t'étais gourré, j'suis arrivé à un exemple qui semble "pro" mais qui fonctionne pas du tout.

La raison essentielle est qu'il semblerait que cette méthode ne fonctionne que pour les bitmap, en fait il me donne la même erreur que si je tentais de charger un pdf :

[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2124: Le type du fichier chargé est inconnu. URL: file:///C|/SITE/HKStudio/about.txt"]

Voici mon code, j'ai l'impression qu'il me faut une autre méthode pour charger du simple txt.

import flash.net.*;
import flash.events.Event;

// création du chargeur
var chargeur:Loader = new Loader();
// référence à l'objet LoaderInfo
var cli:LoaderInfo = chargeur.contentLoaderInfo;
// écoute des événements liés au chargement
cli.addEventListener( Event.OPEN, debutChargement );
cli.addEventListener( Event.INIT, initialisation );
cli.addEventListener( ProgressEvent.PROGRESS, chargement );
cli.addEventListener( Event.COMPLETE, chargementTermine );
cli.addEventListener( IOErrorEvent.IO_ERROR, echecChargement );
cli.addEventListener( HTTPStatusEvent.HTTP_STATUS, echecHTTP );
cli.addEventListener( Event.UNLOAD, suppressionContenu );
// url à atteindre
var maRequete:URLRequest = new URLRequest("about.txt");
//var maRequete:URLRequest = new URLRequest("http://www.reekoch.org/hkagency/about.txt");

// chargement du contenu
chargeur.load(maRequete);

function contenuCharge( pEvt:Event ):void {
trace( pEvt );
}
// ajout à la liste d'affichage
addChild( chargeur );
function debutChargement( pEvt:Event ):void {
// affiche : [Event type="open" bubbles=false cancelable=false eventPhase=2]
trace( pEvt );
}
function initialisation( pEvt:Event ):void {
// affiche : [Event type="init" bubbles=false cancelable=false eventPhase=2]
trace( pEvt );
}
function chargement( pEvt:ProgressEvent ):void {
// affiche : [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=5696]
trace( pEvt );
}
function chargementTermine( pEvt:Event ):void {
// affiche : [Event type="complete" bubbles=false cancelable=false eventPhase=2]
trace( pEvt );
}
function echecChargement( pEvt:IOErrorEvent ):void {

trace( pEvt );
}
function echecHTTP( pEvt:HTTPStatusEvent ):void {
trace( pEvt );
}
function suppressionContenu( pEvt:Event ):void {
// affiche : [Event type="unload" bubbles=false cancelable=false eventPhase=2]
trace( pEvt );
}
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
10 oct. 2009 à 12:50
Juste : je me suis trompé pour la ligne de l'écouteur d'évènement, c'est loader.addEventListener(...) et pas url.contentLoaderInfo.addEventListener(...) (double faute : j'ai tapé url par inattention au lieu de loader + j'ai confondus Loader et URLLoader :D )

Voila ;)
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
10 oct. 2009 à 12:47
Pour ce qui est de l'AS3:

import flash.net.*;
import flash.events.Event;

var loader:URLLoader=new URLLoader();
var url:ULRequest=new URLRequest("about.txt");
url.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(url);

function onLoaded(e:Event):void {

trace(e.target.data);
//affiche ton fichier txt en console de sortie

}
archynet Messages postés 8 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 10 octobre 2009
10 oct. 2009 à 10:56
Merci de ta réponse, j'ai tout essayé et j'avais lancé un autre post ici : http://www.flashkod.com/forum/sujet-PROBLEME-LOADVAR-20-VIA-FICHIER-TXT_1363660.aspx#6

J'ai même téléchargé PSpad spécialement pour re-encoder mes fichiers txt. J'y ai cru, mais rien à faire. J'utilise effectivement de l'as2 j'ai beau changer la version du player rien n'y fait. Je pense que ça viens de la variable puis que j'ai du code qui apparait, ça m'aiderai au moins de savoir si ce code fonctionne chez vous si quelqu'un peu l'essayer.

Si ya une version relativement simple et compréhensive en AS3 j'suis preneur, j'ai tenté de m'y mettre mais c'est vraiment un autre monde pour le moment j'trouve.

Du coup j'ai opté passagèrement pour la version Flash6 AS1 avec un vieux loadVariableNum("","") Bon ça a l'avantage de fonctionner.

Voilà merci pour l'aide en tout cas.

archy
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
8 oct. 2009 à 18:06
Salut,

regardes du coté de l'encodage du fichier txt pour le problème des %20.
Pour ce qui est du code à la fin, ça me fait penser à des variables envoyées par Flash lorsqu'il charge une page avec une requête GET et non POST. Ne faisant plus d'AS2 je ne pourra pas trop t'éclaircir sur ce point.
PS : tu utilises bien de l'AS2?

Stef.
archynet Messages postés 8 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 10 octobre 2009
8 oct. 2009 à 12:20
Bonjour j'ai tenté d'utiliser le petit bout de code inscrit dans : LoadVars très simple.txt pour charger du texte simple donc...Ca fonctionne à l'exception que ça me fou des %20 partout dans le texte chargé et en plus ça me met du code à la fin genre : %2E=&onLoad=%5Btype%20Function%5D

Voici ce que j'utilise
chargeur = new LoadVars();
chargeur.load("about.txt");
chargeur.onLoad = function(charge) {
if (charge=!undefined) {
trace("data loaded !");
contener.champ_text.text;
contener.champ_text.htmlText = chargeur;
contener.gotoAndPlay("on");
} else {
trace("error_textload");
}
};

Une idée ?
MAZALEYRAT Messages postés 16 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 23 janvier 2008
23 janv. 2008 à 09:02
Et bien un grand merci sincère pour toutes ces explications ! ...je vais maintenant essayer de "digérer" tout ça mais suis convaincu d'être sur la bonne piste. Félicitations !
J'aimerai dire "à charge de revanche"... rire, mais là je suis un peu moins certain d'être à la hauteur.
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
22 janv. 2008 à 19:19
Salut, c'est normal que tu ne puisses pas retrouver tes variable en dehors de la fonction car une variable créé dans un bloc n'est disponible que dans ce bloc, ensuite elle est suprimmée.
Tu peut donc utiliser plusieurs astuces pour acceder à tes variables en dehors de la fonction onLoad :

I) Tu peut les déclarer en global :
_global.variable1=A1.valeur1;
pour l'utiliser par la suite tu devras utiliser tout le temps le prefixe _global :
trace(_global.variable1);

-Tu peut utiliser _root (la racine de l'animation) mais attention cette technique est à double tranchants : Si l'animation qui utilise _root est chargée dans une autre animation, _root n'aura plus la valeur de la racine de l'animation chargée, mais de celle qui la charge... Si l'animation est seule, tu peux utiliser _root sans problème :
Même chose qu'avec _global, mais avec _root :
_root.variable1=A.valeur1;
trace(_root.variable1);

Pour finir, tu peut appeler une fonction annexe qui se chargera de faire ce que tu veux. Par exemple si tu veux simplement afficher les infos dans la console de l'API de Flash il te suffira de faire :

A1.onLoad=function(sucess) {
if(sucess) {
afficher(A1.variable1, A1.variable2);
}
else {
trace("erreur chargement...");
}
}//fin onLoad

function afficher(var1, var2) {
trace(var1);
trace(va2);
}

Bien sûr, la fonction afficher n'est qu'un exemple. Tu pourrais donc créer une fonction afficherBoutons() qui se chargerait de créer des copies d'un clip pour créer des boutons et leurs attribuer des fonctions en fonction des données du fichier texte...

Mais si tu a besoin des informations tout au long de ton programme, alors tu sera obligé de recourir au _root ou _global sauf si tu utilise la dernière solution que voici :

Une dernière solution : Comme dit plus haut, une variable est disponible dans le bloc ou elle à été déclarée. Tu pourrais donc aussi déclarer tes variables en dehors de la fonction onLoad pour pouvoir y acceder par la suite en dehors de la fonction :

var variable1:String=new String();
var variable2:String=new String();
A1:LoadVars=new LoadVar();
A1.Load("fichier.txt");
A1.onLoad=function(sucess:Boolean):Void {
if(sucess) {
variable1=A1.variable1;
variable2=A1.variable2;
}
else {
trace("erreur chargement...");
}
}//fin onLoad
trace(variable1);
trace(variable2);

Note : les variables variable1 et variable2 sont de type String car les données renvoyés par la class LoadVars sont des String, même si on met dans le fichier txt :
&variable=15
la valeur de A1.variable="15"(String) et non 15 (Number)

Voilà, j'espère avoir répondu à ta question,

Stefbuet
MAZALEYRAT Messages postés 16 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 23 janvier 2008
22 janv. 2008 à 09:57
Bonjour ! ...apparemment vous maitrisez parfaitement bien la fonction LoadVars... et c'est bien là que réside mon problème du moment. Je butte très certainement sur un tout petit détail mais ça me prend la tête depuis pas mal de temps déjà et je baisse les bras !
En clair : sur la première frame j'utilise la collection d'instructions classiques pour lire un fichier de type .txt, cette lecture se fait dans une fonction.
Sur la deuxième frame, donc en dehors de la fonction, je veux utiliser une des variables lue dans la première frame... et bien impossible, ma variable ne "sort" pas de la fonction.
Mon code :
Frame 1 :

A1 = new LoadVars();
A1.load("http://www.............../monfichier.txt); // Mon fichier texte comprend : &valeur1="toto" & valeur2="zaza"
A1.onLoad = function(success) {
if (success) {
variable1 = A1.valeur1;
variable2 = A1.valeur2;
}
trace(variable1); // et ça affiche toto sans probleme
trace(variable2); // et ça affiche zaza sans probleme
}

Frame 2 :
trace(variable1); // et ça affiche "undefined"
trace(variable2); // et ça affiche "undefined"

En d'autres termes, mes variables ne sont disponibles qu'à l'intérieur de la fonction qui lit le fichier texte.
Mon but : pouvoir utiliser les variables ailleurs .... est ce possible ?

MERCI POUR VOTRE ATTENTION ET VOTRE COLLABORATION !
MAZALEYRAT Messages postés 16 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 23 janvier 2008
22 janv. 2008 à 09:40
Bonjour.... je n'arrive pas à ouvrir votre .fla sous MX .... est ce normal ?
Improve Messages postés 176 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 28 novembre 2009
27 nov. 2007 à 22:31
Bien ton source. Bon d'accord que je me suis retrouvé à mes débuts avec 'Mx' quoique j'ai chargé la version CS3. Mais c'est un retour accepté parce que j'avais mis de côté les multiples possibilités de ce genre de chargement des données.txt. Merci.
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
14 nov. 2007 à 16:25
J'ai refait la source completement afin d'utiliser la class LoadVars, et proprement.
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
24 juin 2006 à 23:01
oai en fait il suffi d'enregistrer le fichier txt en unicode
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
31 mai 2006 à 14:10
oui, il est possible de réunnir les fichiers txt en 1 seul fichier txt, tu doi simpelment mettre :
il suffi juste de rajouter un & entre les variables dans le fichier texte tel que par exemple :
code txt :
&10/04/06 cet%20Appartement%20n'est%20pas%20disponible%20pour%20le%20moment%20!!%20desolé%20!!&11/04/05 ce%20appart%20est%20libre%20&11/04/05= ect...%20ect...20

sinon au niveau des espace, je ne sais pas essaye de decoche le trasformer en version html moi j'ai pas tro le temps et di moi ce que tu trouve...
lolycatz Messages postés 14 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 2 septembre 2008
31 mai 2006 à 12:04
Je n'arrive pas à faire marcher le flash là, je ne trouve pas info.txt dans le zip.

Dis, et si tu met les codes comme ça: si tu decoche l'option "mettre les textes au format html" dans les propriétes de la zone de text dynamique, je suis sure que ca pourrait marcher sans avoir a mettre %20 pour les espaces (et eventuellement tu sauve le .txt en UTF8 pour les caracteres accentués).
Essaye pour voir et dis moi si ca marche...

Autre chose tu crois qu'il serait possible de rassembler tous les fichiers text dans 1 seul ce serait plus pratique non... c'etait ce que je voulais faire mais je n'ai pas reussi?

Dis moi ce que tu en penses!!!

Loly
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
31 mai 2006 à 08:13
je veux bien mais dans ton cas il y a un prob : dans le fichier txt, a chaque fois que tu voudra changer le fichier texte, il ne sufirapas de faire un copier coller, en effet, il ne doit pas y avoir d'espace, les espace sont remplacer par %20.
cela donne :
dispo = bonjour%20les%20apparts%20de%cette%20date%20ne%20sont%20pas%20libre%20pour%20cette%20date%20!!!

il ne faudra pas modifier le premier mot : diso = .

pence tu que tes parent pourons faire cela ? :-)

si oui alors si tu veux je pourrais tla faire :-)
lolycatz Messages postés 14 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 2 septembre 2008
25 mai 2006 à 17:01
yep exactement... desolee j'etais pas tres claire, un peu overdosée de codes sans doute ;o).

imagine que tu veux reserver une location saisonniere et tu veux verifier la disponibilité de tes dates avant de contacter les propriétaire.la location se faisant a la semaine du samedi au samedi, l'utilisateur choisi une semaine (ex : du 27 mai au 3 juin 2006) et un message s'affiche pour dire si le studio est disponible ou deja reserve pour la date en question.

J'avais deja trouvé une source similaire mais en PHP et mes parents sachant a peine faire un copier coller je trouvais cela plus pratique pour eux de mettre les infos sur un fichier texte comme ca ca limite les erreures et c'est updaté en 2 sec.

Seul probleme je n'arrive pas a le faire moi meme alors je cherchais une ame charitable qui veuille bien me montrer... voila tu sais tout! si tu peux m'aider ce serait super cool!

lolycatz
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
25 mai 2006 à 16:22
j'ai pas trés bien compris ce que tu voulais ? une combo box avec des dates, et quand on clique sur une des dates affichés, sa affiche soit occupé ou soit libre ??
lolycatz Messages postés 14 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 2 septembre 2008
24 mai 2006 à 19:57
ps: suis sous flash mx
;o)
thanks
lolycatz Messages postés 14 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 2 septembre 2008
24 mai 2006 à 19:56
Salut,
Dis moi, tu pourrais m'aider a faire la meme chose mais avec une combo box contenant un max de dates correspondant à un message : "diponible" ou "déja reservé".
Je t'explique mes parents ont des chambres d'hotes qu'ils louent a la semaine et cela leur serait tres utile pour leur site, la gestion des reponses en .txt aussi compte tenu que ce sont des breles totales en informatiques alors le php j'oublie tout de suite.
Si tu peux m'aider, te casse pas la tete pour les dates mais en juste quelques unes et je completerai, je suis vraiment debutante mais si on me montre l'exemple je pense que je saurais faire...
Merci
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
19 mai 2006 à 13:52
le %20 c'est pour les espaces dans un attribut

Tu ne peut pas faire par exemple :

age=18 ans&prenom=bali balo


Il faut faire :

age=18%20ans&prenom=bali%20balo....etc...etc



Je verais plus tard la source, la chui au boulot et j'ai que flash MX ^^


bali_balo....=]
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
19 mai 2006 à 01:05
waii, jai pas compris pk tu mets le %20
age=17%20ans
Rejoignez-nous