Fichier TXT
Lire un fichier texte
Le chargement d'un fichier txt en ActionScript 3 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.
Charger un texte
Afin de charger des données, nous créons une instance de la classe URLLoader puis nous utilisons la méthode load. A l'aide du bloc-note, nous créons un fichier texte nommé "donnees.txt" qui contient cette ligne : Voici le contenu du fichier texte.
Dans un nouveau document Flash ce code:
// création du conteneur
var chargeurDonnees:URLLoader = new URLLoader();
// Chargement de l'objet dans le conteneur
chargeurDonnees.load(new URLRequest("donnees.txt"));
// Ecoute de l'évènement Event.COMPLETE
chargeurDonnees.addEventListener(Event.COMPLETE, chargementTermine);
function chargementTermine(evt:Event):void {
// Accès au données (via la propriété "data")
var contenu:String = evt.target.data
// Affichage :
trace(contenu);
}
var chargeurDonnees:URLLoader = new URLLoader();
// Chargement de l'objet dans le conteneur
chargeurDonnees.load(new URLRequest("donnees.txt"));
// Ecoute de l'évènement Event.COMPLETE
chargeurDonnees.addEventListener(Event.COMPLETE, chargementTermine);
function chargementTermine(evt:Event):void {
// Accès au données (via la propriété "data")
var contenu:String = evt.target.data
// Affichage :
trace(contenu);
}
Encodage URL
L'encodage URL est le standard de transmission d'informations par formulaire.
L'encodage respecte les règles suivantes :
◊ Les champs sont séparés par des esperluettes (&)
◊ Un champ comporte un nom de champ suivi du signe = puis de la valeur.
◊ Les espaces sont remplacés par des +
◊ Les caractères non alphanumériques sont remplacés par des %XX (ou XX représente le code ASCII en hexadécimal du caractère.
Voici le contenu du fichier "chargement.txt"
titre=Chargement d'un fichier txt dans Flash&description=Utilisation
Attention: aucun espace autorisé avant et après les signes égale.
Charger un fichier txt en ActionScript 3 (AS3)
// création du conteneur
var conteneurTextes:URLLoader = new URLLoader();
// url du fichier texte à charger
var monfichier:URLRequest = new URLRequest("textes/chargement.txt");
function yesItIs(evt:Event):void
{
// pour accéder aux données, on utilise la propriété "data"
var variables:URLVariables = new URLVariables(evt.target.data);
trace("Le titre est '" + variables.titre + "'\nLa description est '" + variables.description +"'");
// ou bien, dans une zone de texte :
// maZone.text = "Le titre est '" + variables.titre + "'\nLa description est '" + variables.description +"'";
}
// Progression du chargement (facultatif)
function enProgression(evt:ProgressEvent):void
{
var p:Number=(evt.bytesLoaded*100)/evt.bytesTotal;
trace(p);
}
// Pendant la progression du chargement lancer la fonction "enProgression" (facultatif)
conteneurTextes.addEventListener(ProgressEvent.PROGRESS, enProgression);
// Lorsque le chargement est terminé, exécuter la fonction "yesItIs"
conteneurTextes.addEventListener(Event.COMPLETE, yesItIs);
// Chargement de l'objet dans le conteneur
conteneurTextes.load(monfichier);
// création du conteneur
var conteneurTextes:URLLoader = new URLLoader();
// url du fichier texte à charger
var monfichier:URLRequest = new URLRequest("textes/chargement.txt");
function yesItIs(evt:Event):void
{
// pour accéder aux données, on utilise la propriété "data"
var variables:URLVariables = new URLVariables(evt.target.data);
trace("Le titre est '" + variables.titre + "'\nLa description est '" + variables.description +"'");
// ou bien, dans une zone de texte :
// maZone.text = "Le titre est '" + variables.titre + "'\nLa description est '" + variables.description +"'";
}
// Progression du chargement (facultatif)
function enProgression(evt:ProgressEvent):void
{
var p:Number=(evt.bytesLoaded*100)/evt.bytesTotal;
trace(p);
}
// Pendant la progression du chargement lancer la fonction "enProgression" (facultatif)
conteneurTextes.addEventListener(ProgressEvent.PROGRESS, enProgression);
// Lorsque le chargement est terminé, exécuter la fonction "yesItIs"
conteneurTextes.addEventListener(Event.COMPLETE, yesItIs);
// Chargement de l'objet dans le conteneur
conteneurTextes.load(monfichier);
Note:
On peut aussi choisir le type de format que l'on recupère a l'aide de la propriété dataFormat de URLLoader, cette propriété accepte 3 types de valeurs :
• URLLoaderDataFormat.BINARY - Données binaires
• URLLoaderDataFormat.TEXT - Texte brut
• URLLoaderDataFormat.VARIABLES - Chaîne au format URL-encoded
Par exemple :
var conteneurTextes:URLLoader = new URLLoader();
conteneurTextes.dataFormat = URLLoaderDataFormat.VARIABLES;
conteneurTextes.dataFormat = URLLoaderDataFormat.VARIABLES;
Source: Exemple issu du superbe Bases-as3.fr
Le gestionnaire onData
Utilisation du gestionnaire onData
Exemple: charger un fichier html dans un composant TextArea (AS3)
//Définir un format de texte (TextFormat)
var monformat:TextFormat = new TextFormat();
// Applique le format sur le composant
monTextArea.setNewTextFormat(monformat);
//Activation du Html
monTextArea.html = true;
var myVars:LoadVars = new LoadVars();
// Définition du gestionnaire onData
myVars.onData = function(myStr:String):Void {
if (myStr != undefined) {
// Chargement du texte à afficher
monTextArea.text = myStr;
} else {
trace("Impossible de charger le texte.");
}
};
myVars.load("http://www.example.com/flash/mapage.htm");
//Définir un format de texte (TextFormat)
var monformat:TextFormat = new TextFormat();
// Applique le format sur le composant
monTextArea.setNewTextFormat(monformat);
//Activation du Html
monTextArea.html = true;
var myVars:LoadVars = new LoadVars();
// Définition du gestionnaire onData
myVars.onData = function(myStr:String):Void {
if (myStr != undefined) {
// Chargement du texte à afficher
monTextArea.text = myStr;
} else {
trace("Impossible de charger le texte.");
}
};
myVars.load("http://www.example.com/flash/mapage.htm");
Note: Vous devez définir une fonction qui s'exécute lorsque le gestionnaire est appelé.