Lire des séries de données

Noms automatiques

Il est très facile de générer des noms automatiquement en concaténant une valeur numérique à une chaîne de caractères.

Par exemple, "n"+0 donne "n0", "n"+1 donne "n1", etc. En utilisant le compteur d'une boucle, le procédé devient automatique : "n"+i donnera "n12" lorsque i vaudra 12. Essayons de lire une source de données contenant des variables nom0, nom1, ... nom6.

Le fichier texte contenant les noms

Le fichier a été encodé en Unicode. Il n'est donc pas nécessaire d'activer la page de code dans l'animation. Dans le panneau Actions de l'image 1, on écrit simplement :

Panneau Actions de l'image 1

Ensuite, dans le panneau Actions de l'image 6, on donne le code suivant :

Panneau Actions de l'image 6

On utilise ici une simple boucle for pour parcourir le domaine 0 .. 4 et créer les noms correspondants. Notez que la variable v contient successivement les valeurs "nom0", "nom1", etc. Si l'on veut afficher le contenu de la variable identifiée par un de ces noms, il faut "évaluer" le nom.

Si l'on ne connaît pas le nombre de variables, on utilise une boucle while avec la syntaxe ci-dessous :

Une boucle while avec une astuce

Ce code utilise une astuce et cela le rend difficile à comprendre. Pourtant, l'astuce en question est utilisée très fréquemment et il vaut la peine de la connaître. Voici l'astuce : la boucle doit s'arrêter lorsque i est tel qu'il n'existe pas de variable "nom"+i. Il suffit donc de tester (par la fonction eval) si le contenu de la variable est différent de null. En même temps, on affecte le résultat de la fonction eval() à la variable copine et c'est en réalité le résultat de cette affectation que l'on teste. On aurait pu écrire le code ci-dessous, mais il n'est pas optimisé car il fait appel 2 fois à la fonction eval().

La même boucle sans astuce

Projet : afficher des marques de voitures dans des cartouches

Le projet consiste à lire à partir d'une URL une série de marques de voitures et à les afficher dans des cartouches de différentes couleurs.

Le fichier de données, nommé immat01.txt, contient en plus des marques, des données statistiques relatives aux immatriculations en Belgique au mois d'août 2003. Il se présente comme sur l'illustration ci-dessous

Le fichier immat01.txt

La première image de l'animation charge l'URL au niveau 0.

Lecture de l'URL

L'image 6 contient le code ci-dessous, qui nous permet de vérifier que les variables ont été lues correctement.

Vérification de la lectures des variables

Afin de faciliter l'écriture et plus tard la lecture du code, nous allons structurer le code en fonctions qui accompliront chacune une tâche. La première fonction a pour objectif de lire les marques de voitures, comme nous venons de le faire. Il suffit donc de placer le code au sein d'une fonction convenablement nommée et d'appeler cette fonction.

Fonction lireMarques(), version 1

Comme les noms des marques de voiture seront réutilisés plusieurs fois dans l'animation, il est intéressant de conserver ces noms dans un tableau. Le code ci-dessous, écrit en ActionScript 2.0, crée et remplit le tableau marques.

Stockage des variables dans un tableau

Pour généraliser la fonction à un nombre variable de marques de voitures, nous utilisons la petite astuce décrite ci-dessus. L'illustration montre qu'elle peut être utilisée dans la condition de la boucle for.

Lire un nombre variable de marques

Il est temps maintenant de revenir à la scène de l'animation. Après tout, la fenêtre de sortie c'est bien, mais sans plus. Nous allons afficher chaque marque dans un cartouche. Ce cartouche est nécessairement un symbole clip formé de deux calques contenant respectivement le fond et une zone de texte dynamique nommée marque_txt.

Le symbole clip mc:cartouche

Pour amener les cartouches sur la scène, nous créons la fonction afficherMarques()

La fonction afficherMarques

Pour donner à chaque cartouche une couleur différente, il faut commencer par préparer un tableau de valeurs numériques correspondant aux couleurs désirées. Il est facile de choisir ces valeurs dans la palette de couleurs de Flash. Pour indiquer à Flash que ces valeurs sont codées en base 16, c'est-à-dire en hexadécimal, on les préfixe par 0x.

valeurs hexadécimales

Changer la couleur du clip cartouche donne au texte la même couleur que le fond. Il faut donc séparer le texte et le fond et faire du fond un clip.

Il est possible de programmer la couleur d'un clip en créant un objet Color pour le clip concerné et en utilisant la méthode setRGB de cet objet.

Création d'un objet Color

Ce fragment de code appartient à la fonction afficherMarques().

La fonction afficherMarques()