Charger un fichier txt en ActionScript 3 (AS3)
Le chargement d'un fichier txt ne se fait plus avec la classe LoadVars mais avec la classe URLLoader.
La classe URLLoader va nous permettre de créer un conteneur de chargement pour notre fichier txt. L'url absolue ou relative du fichier à charger sera défini dans un objet URLRequest.
La classe URLLoader implémente directement les événements progress et complete. L'affichage des données chargées se fera donc dans la fonction de retour de l'événement complete.
Le contenu du fichier txt est disponible dans la propriété data de l'objet Loader. Ce contenu pourra être parsé, lu en tant que propriétés d'un objet URLVariables dans lequel on aura stocké la propriété data.
Le fichier chargement.txt
-
titre=Chargement d'un fichier txt dans Flash&description=Utilisation des classes URLLoader, URLRequest et URLVariables
Le code ActionScript
-
// création du conteneur de l'image
-
var conteneurTextes:URLLoader = new URLLoader();
-
// url du fichier texte à charger
-
var fichier:URLRequest = new URLRequest("textes/chargement.txt");
-
// Le chargement est terminé
-
function onComplete(evt:Event):void
-
{
-
var variables:URLVariables = new URLVariables(evt.target.data);
-
trace("Le titre est '" + variables.titre + "'\nLa description est '" + variables.description +"'");
-
}
-
// Progression du chargement
-
function onProgress(evt:ProgressEvent):void
-
{
-
var p:Number=(evt.bytesLoaded*100)/evt.bytesTotal;
-
trace(p);
-
}
-
// Evénement progress
-
conteneurTextes.addEventListener(ProgressEvent.PROGRESS, onProgress);
-
// Evénement complete
-
conteneurTextes.addEventListener(Event.COMPLETE, onComplete);
-
// chargement de l'image dans le conteneur
-
conteneurTextes.load(fichier);
;-)
Je suis Antony Chauviré, développeur sur la Flash Platform.
On peut aussi choisir le type de format que l'on recupere a l'aide de la propriete dataFormat de URLLoader, cette propriété accepte 3 types de valeurs :
URLLoaderDataFormat.BINARY - Données binaires
URLLoaderDataFormat.TEXT - Texte brut
URLLoaderDataFormat.VARIABLES - Chaine au format URL-encoded
pour reprendre ton exemple :
var conteneurTextes:URLLoader = new URLLoader();
conteneurTextes.dataFormat = URLLoaderDataFormat.VARIABLES;
voila ;)
Avec tous ces p'tits tutos AS3, vous me donnez vraiment envis de m'y mettre !!!
Merci Tannoy ;)
Hello tout le monde, je vois que ca parle ActionScript3 ici alors je tente ma chance:
Savez vous comment un fichier php doit renvoyer une chaine au format URL?
Pour un fichier txt j'y arrive en ecrivant dans mon fichier un truc de la forme:
Text=unsupertexte&Titre=untitretrepignant
et je le recupere le tout dans l'equivalent de ma fonction onComplete grace a
evennement.target.data.Text ou evennement.target.data.Titre
Avec un fichier php ecrire Text=unsupertexte&Titre=untitretrepignant dans un echo un print ou meme un return ne donne pas de resultats , savez vous que faire svp?
Bonjour vivi,
Côté Flash, il faut utiliser la méthode URLLoader.load() conjointement avec la constante DataFormat.VARIABLES pour lire les données encodées à la manière d'une URL générées par un script côté serveur.
Côté PHP, il faut utiliser echo ou print :
<?php
$maVar = "test";
echo "maVar=$maVar";
?>
;)
Merci de ta reponse tannov ca marche finallement tres bien ;)
Je sais pas si c'est traité a un endroit du site mais si je veux maintenant envoyé des variables a ma page php et recuperer le resultat, je fais somment?
re bonjour vivi,
pour obtenir tes réponses, je te conseille de parcourir ce forum :
flash.mediabox.fr/
Je ne peux malheureusement publier tes autres commentaires car mon blog n'a pas vocation à ressembler à un forum.
;)
Comment faire en sorte de toujour recharger le texte du serveur et pas celui du cache ?
Bonjour Popo,
Une solution est préconisée à cette adresse :
URLLoader sans cache
;)
Bonjour,
Tout d'abord un grand merci pour ces ressources claires et très bien expliquées.
J'ai bien mis en application le chargement du fichier texte externe dans ma zone de texte dynamique flash. Tout fonctionne très bien (scroll y compris).
Je souhaiterais à présent que ma zone de texte dynamique flash interprète les balises que j'ai ajoutées dans mon fichier texte. J'ai bien coché "rendre le texte au format HTML" dans les propriétés de mon texte dynamique mais il persiste à les afficher.
Je dois avoir loupé un truc important... mais lequel ?
Merci d'avance,
Nathalie
Bonjour Nathalie,
Est-ce que ta zone de texte dynamique est un champ texte créé dans Flash ou un champ texte créé en ActionScript ?
;-)
Bonjour Tannoy,
Il s'agit d'une zone de texte dynamique tracée (en dur) à l'aide de l'outil texte de Flash et auquel j'ai affecté un nom d'occurrence.
Merci !
Nathalie
Bonsoir,
J'ai commencé hier soir l'Actionscript 3 (FlashBuilder 4) et j'ai un petit soucis avec le code fournis, malgré qu'il soit parfait pour moi je comprend pas trop.
J'ai créer un fichier texte avec les données comme dans le tutoriel et le code AS je ne l'ai pas modifié encore que j'ai déjà 6 erreurs. Et toute de même type. Erreur 1120 pour les éléments suivant :
1120: Accès à la propriété non définie conteneurTextes.
1120: Accès à la propriété non définie conteneurTextes.
1120: Accès à la propriété non définie conteneurTextes.
1120: Accès à la propriété non définie fichier.
1120: Accès à la propriété non définie onComplete.
1120: Accès à la propriété non définie onProgress.
Je comprend pas du tout (bon je me trompe peut-être pour la suite) j'ai créer et essayer divers conteneur en mettant l'id conteneurTextes mais cela me génère une autre erreur :
1151: Conflit dans la définition conteneurTextes dans l'espace de nom internal.
Je vous en demande beaucoup mais j'aimerais bien réussir à charger un fichier, ne serait-ce que pour comprendre le fonctionnement et voir comment régler ce genre d'erreur.
JE répète je suis vraiment débutant complet.
D'avance merci de vos réponses.
Cordialement
Bonjour Sweek,
Le code indiqué dans l'article est utilisable dans un fichier fla créé dans Flash. Pour du Flex, c'est un peu différent.
Si tu débutes en Flex, je te conseille d'aller faire un tout sur ce site http://www.flex-tutorial.fr/
;-)