Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 02:16  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Helm - Créer une prévision météorologique animée sur cinq jours
(Article écrit par Randy Finch et extrait du Randy Finch's Web Site - février 1995)


Dans un précédent article, j'avais expliqué comment créer une prévision météorologique animée sur cinq jours en utilisant Deluxe Paint 4. Comme je l'avais souligné, certaines des tâches sont assez fastidieuses, en particulier le placement du texte des températures maximale et minimale pour chaque jour. Dans ce présent article, je vous montre comment faciliter ces tâches en utilisant Helm. Le livre que j'ai créé s'intitule "5DayForecast". Il se compose de deux pages. La première page est l'écran de prévision animé (figure 1). La page 2 est utilisée pour entrer des informations sur l'écran de prévision (figure 2). Examinons d'abord la première page.

L'écran de prévision à cinq jours

Cet écran est un écran entrelacé basse résolution avec un suraffichage maximal. Ce paramètre peut être défini dans la requête d'affichage à laquelle on accède via l'élément de menu "Author/Display" (Auteur/Affichage).

Helm
Figure 1 : Écran de la prévision à cinq jours

Vous vous souvenez peut-être que c'est cette résolution qui a été utilisée dans Deluxe Paint pour créer le modèle de prévision à cinq jours. En fait, la première page du livre Helm utilise ce même modèle. Pour ajouter l'image du modèle à la page, créez un champ d'images lié qui couvre toute la page. Pour créer un champ d'images lié, cliquez sur l'outil champ d'images, dans la fenêtre "Draw Tools" (Outils de dessin), avec le bouton droit de la souris et sélectionnez "Link" (Lier) dans le menu contextuel. Après avoir dessiné un rectangle couvrant toute la page, une requête vous demandera le nom d'un fichier graphique à lier au champ d'images. Une fois le lien établi, l'image sera toujours chargée dans le champ d'images chaque fois que la page sera affichée.

Outre le champ d'images pleine page, la page comporte plusieurs autres objets. Il y a cinq objets "textfield" (champs de texte) situés dans la barre bleu clair sous le titre, chacun centré au-dessus des cinq rectangles contenant les brosses animées. Ils contiennent les noms des jours. La couleur d'arrière-plan de ces champs de texte est définie sur le même bleu clair que la barre, et l'option de bordure est définie sur aucune. Par conséquent, si aucun texte ne figure dans ces champs, vous ne pouvez même pas savoir qu'ils existent. La justification du texte de ces champs de texte est définie sur Centré afin que les noms des jours soient centrés au-dessus des brosses animées. La police utilisée pour ces champs de texte est CGTimes 30.

Les dix cases situées au bas du modèle sont également recouvertes d'objets de champ de texte "invisibles". La couleur, la bordure et la justification de chaque champ sont définies de la même manière que pour les champs de nom de jour décrits ci-dessus. La police utilisée dans ces champs de texte est CGTriumviate Gras 30. Il peut être utile de créer d'abord une seule zone de texte, de modifier ses propriétés, puis d'utiliser la fonction "Objet/Duplicate" (Objet/Dupliquer) de Helm (figure 3).

Helm
Figure 3 : La requête de duplication

Les cinq rectangles situés au milieu du modèle sont centrés sur cinq champs d'images non liés de taille 50x183, qui, vous vous en souvenez peut-être, correspondent à la taille des brosses animées créées dans Deluxe Paint. La vitesse de chaque champ d'images est fixée à 20 images par seconde. Pour ce faire, il suffit de sélectionner l'élément de menu "Image/Info" et de régler le temps par image sur "3". Chaque période correspond à un soixantième de seconde. En outre, pour que les brosses animées s'animent réellement, les options "Animating Frames" (Trames animées) et "Lock Image" (Verrouiller Image) doivent être activées. Là encore, créez un champ d'image, définissez ses propriétés, puis dupliquez-le. Sachez que Deluxe Paint 4 n'enregistre pas de fréquence d'images avec les brosses animées. Helm, par contre, le fait. Comme il n'y a aucun moyen dans la version de Helm que j'utilise actuellement (1.56) de définir la fréquence d'images d'une brosse animée à partir d'un script, la fréquence d'images doit être définie manuellement chaque fois qu'une brosse animée est chargée. C'est fastidieux. J'ai fini par charger les brosses animées dans un champ d'images, en changeant leur fréquence d'images, puis en les enregistrant. Les brosses animées nouvellement enregistrées se chargeront et fonctionneront à la fréquence d'images appropriée. Il y avait un effet secondaire intéressant à ce processus : les fichiers de brosses animées étaient plus petits que les fichiers originaux sauvegardés de Deluxe Paint d'environ 1 ou 2 ko.

À ce stade, 5DayForecast est un programme plutôt fonctionnel. Les noms des jours peuvent être saisis dans les cinq champs de texte, tout comme les températures maximales et minimales. La police sera déjà définie et le texte sera automatiquement centré. Enfin, les brosses animées appropriées peuvent être chargées dans les champs d'image en sélectionnant chaque champ tour à tour, en choisissant l'élément de menu "Image/Load" (Image/Charger), et en sélectionnant la brosse animée à charger. Le menu "Image" sera masqué si le champ d'images est verrouillé. Par conséquent, avant de sélectionner un champ d'images, choisissez l'élément de menu "Edit/Unlock All" (Édition/Tout Déverrouiller). Cela déverrouillera tous les objets verrouillés de la page. Après avoir chargé les cinq brosses animées, choisissez l'élément de menu "Edit/Unlock All" (Édition/Tout Déverrouiller) une fois de plus pour reverrouiller les objets. Vous pouvez maintenant appuyer sur le bouton "Browse Tool" (Outil de navigation) dans la fenêtre "Draw Tools" (Outils de dessin) pour lancer l'animation.

Même si cette prévision animée sur cinq jours est plus facile à utiliser que celle réalisée à l'aide de Deluxe Paint, il reste quelques éléments à simplifier. C'est là qu'intervient l'écran d'information de la page deux du livre Helm. Examinons-le de plus près.

L'écran d'information des prévisions à cinq jours

Cette page (figure 2) comporte des objets permettant de saisir toutes les informations requises par l'écran modèle (figure 1).

Helm
Figure 2 : Écran d'information

Dans le coin supérieur gauche de la page se trouve un sélectionneur à boutons radio avec une liste d'éléments (figure 4) qui vous permet de sélectionner facilement lequel des sept ensembles de cinq jours consécutifs vous prévoyez. Il y a un sélectionneur de fichiers dans le coin supérieur droit pour sélectionner les fichiers de brosse animée. Il y a 15 champs de texte en bas de l'écran pour entrer les cinq températures maximales, les cinq températures minimales, et les cinq brosses animées à utiliser pour la prévision.

Helm
Figure 4 : Information des boutons radio

Les cinq objets à droite des champs de texte "AnimBrush" (Brosse animée) sont des boutons groupés, mutuellement exclusifs, à bascule. Lorsqu'on appuie sur un bouton, il est mis en évidence, tandis que celui qui est sélectionné voit sa mise en évidence supprimée. Lorsqu'un fichier est sélectionné à partir du sélectionneur de fichiers, son nom sera inséré dans le champ de texte "AnimBrush" (Brosse Animée) à gauche du bouton "<-Select" mis en évidence. Ces boutons basculés, mutuellement exclusifs, sont en fait cinq boutons individuels qui ont été regroupés en les sélectionnant tous simultanément, puis en sélectionnant l'élément de menu 'Object/Group" (Objet/Groupe). Les éléments "Exclude Group" (Exclure le groupe) et "Toggle Select" (Permuter la sélection) dans la requête d'informations sur les boutons en surbrillance sont cochés pour chaque bouton (figure 5).

Helm
Figure 5 : Sélection de l'exclusion et de la permutation

Les autres objets de la page sont des zones de texte verrouillées. Il s'agit du titre en haut de la page, des étiquettes "Day 1" (Jour 1) à "Day 5" (Jour 5) à gauche des zones de texte de température maximale, et des étiquettes "High" (Maximale), "Low" (Minimale) et "AnimBrush" (Brosse Animée) au-dessus du groupe inférieur de zones de texte. Il est important que ces zones de texte soient verrouillées car après avoir saisi du texte dans une zone de texte, Helm place automatiquement le curseur dans la zone de texte disponible suivante. Comme ces étiquettes n'ont pas besoin d'être modifiées, le curseur ne doit jamais y accéder. Helm contourne les zones de texte verrouillées lors du repositionnement du curseur. Les étiquettes situées au-dessus du sélectionneur de boutons radio et du sélectionneur de fichiers sont les noms des sélectionneurs. Le nom d'un objet peut être affiché en activant l'option "Caption" (Légende) pour cet objet (figure 6).

Helm
Figure 6 : Réglages de la légende

Une fois l'interface construite, il est temps d'ajouter des fonctionnalités au livre. Les tâches à accomplir par ce livre sont trop compliquées pour être exécutées par des actions. Par conséquent, des scripts sont nécessaires. Ceux-ci seront abordés plus loin.

Le script "PageOpen" pour la page 2

La plupart des actions du programme se déroulent sur la page 2, qui est l'écran d'information sur les prévisions. Lorsque cette page s'ouvre pour la première fois, son script "PageOpen" s'exécute (listing 1). Ce script peut être modifié en allant sur la page 2 et en sélectionnant l'élément de menu "Author/Page" (Auteur/Page). Sélectionnez le bouton "Script" lorsque la requête apparaît. Le script "PageOpen" ne fait qu'une seule chose : il émet une commande "Click On". Cette commande simule le clic de l'utilisateur sur un objet de la page. Dans ce cas, le bouton id 36 est cliqué. Il s'agit du bouton supérieur "<-Select" à droite de la zone de texte du nom de fichier de brosse animée du jour 1. Cette action initialise le groupe de boutons basculants, mutuellement exclusifs. J'ai utilisé l'ID du bouton plutôt que son nom car le nom de ces cinq boutons est le même : "<-Select". Ils devaient être nommés de la même manière car le nom est ce qui apparaît sur le bouton, et le texte des cinq boutons devait être le même.

Le script "SelectDown" pour les boutons "<-Select"

Le script "SelectDown" pour le bouton id 36 est présenté dans le listing 2. Il attribue une valeur de chaîne de caractères de Day1AnimBrush au conteneur global DayField. Day1AnimBrush est le nom du champ de texte contenant le nom de la brosse animée pour le premier jour de la prévision. Il existe des scripts similaires pour chacun des autres boutons "<-Select", attribuant à DayField une valeur de Day2AnimBrush, Day3AnimBrush, et ainsi de suite. Veillez à utiliser un script SelectDown pour ces boutons plutôt qu'un SelectUp car le basculement se produit sur un SelectDown. Si vous utilisez un script SelectUp, il est possible que l'utilisateur clique sur l'un des boutons et s'en éloigne avant de relâcher le bouton de la souris. Dans ce cas, le bouton en surbrillance ne correspondra pas au nom du champ de texte "AnimBrush" dans DayField.

Le script "SelectUp" pour le sélectionneur de fichiers

Le script "SelectUp" pour le sélectionneur de fichiers, nommé "Select an AnimBrush" (Sélectionner une brosse animée), est montré dans le listing 3. Il extrait simplement la partie nom de fichier de la combinaison chemin et nom de fichier renvoyée par le sélectionneur de fichier et la place dans le champ de texte référencé par le conteneur global DayField. Remarquez que le sélectionneur de fichiers est référencé par le nom "me" (moi). Ce nom peut être utilisé par n'importe quel script pour faire référence à l'objet auquel le script est attaché.

Le script "PageClose" pour la page 2

Une fois que toutes les informations ont été saisies sur la page 2, l'élément de menu "Go/Next Page" (Aller/Page suivante) peut être sélectionné pour passer à l'écran de prévision. À ce stade, le script "PageClose" de la page 2 s'exécute (listing 1). Ce script est le coeur du livre. Il extrait le chemin d'accès du sélectionneur de fichiers et le place dans un conteneur global nommé "BrushDir". Il extrait ensuite les noms des cinq brosses animées qui seront utilisées par l'écran de prévision et les place dans cinq conteneurs globaux nommés de manière appropriée. Les six conteneurs globaux de chaînes affectés ici sont utilisés par le script PageOpen de la première page.

Ensuite, un tableau de chaînes nommé NameOfDays est créé, contenant les sept abréviations à trois lettres des jours de la semaine. Il sera utilisé dans la boucle suivante.

Avant la boucle, le conteneur "CurDay" est initialisé avec la valeur du sélectionneur de boutons radio, nommé "Les cinq jours", plus un. Le sélectionneur de boutons radio, qui comporte sept éléments, renvoie une valeur comprise entre 0 et 6, en fonction de l'élément sélectionné. Ce nombre déterminera quel jour est le premier de la prévision. Cependant, étant donné que les abréviations des jours dans le tableau NameOfDays sont numérotées de 1 à 7, un un doit être ajouté à la valeur renvoyée par le sélectionneur de boutons radio.

Une boucle s'exécute alors, la valeur de "i" commençant à 1 et se terminant à 5. Les conteneurs de chaîne "FirstName" et "SecondName" sont remplis avec les noms des zones de texte appropriées pour les températures maximales et minimales, dont la première est nommée "Day1High" et "Day1Low". La concaténation de chaînes de caractères est utilisée pour construire ces noms. Le nombre dans le conteneur "i" (par exemple, 1) est automatiquement converti en chaîne de caractères (par exemple, "1") lors de la concaténation. Ensuite, les chaînes contenues dans les zones de texte représentées par les conteneurs FirstName et SecondName sont insérées dans les zones de texte portant le même nom sur la page 1. Ces dernières se trouvent sur les rectangles colorés en bas de l'écran de prévision.

Ensuite, l'abréviation à trois lettres du nom du jour est extraite de NameOfDays et insérée dans le champ de texte approprié de la page 1. Les champs de texte DayName1 à DayName5 sont centrés au-dessus des cinq rectangles contenant les brosses animées sur l'écran de prévision. Veillez à ce que l'expression "DayName"&i soit entourée de parenthèses, car l'opérateur de champ de texte a priorité sur l'opérateur "&". Sans les parenthèses, Helm essaiera de concaténer "i" à la valeur du champ texte DayName. Comme ce champ texte n'existe pas, une erreur se produit lors de l'exécution.

Enfin, la valeur de "CurDay" est mise à jour pour le prochain passage dans la boucle. L'opérateur modulo (%) fait en sorte que la valeur de l'expression "CurDay%7+1" augmente jusqu'à sept, puis revient à un. Cela permet d'éviter une tentative d'accès à un élément de NameOfDays qui n'existe pas.

Le script "PageOpen" pour la page 1

Le script "PageOpen" de la page 1 s'exécute lorsque la page est activée. Il est présenté dans le listing 4. Il combine simplement le nom du répertoire stocké précédemment dans le conteneur global "BrushDir" avec chacun des cinq noms de brosses animées et charge ensuite les brosses animées dans les champs d'images appropriés. L'affichage est verrouillé avant d'effectuer cette opération afin que les brosses animées ne commencent pas à s'animer tant qu'ils ne sont pas tous chargés. L'affichage est déverrouillé avant la fin du script. Si l'affichage n'est pas verrouillé en premier, les champs d'images commenceront à s'animer puis, un par un, ils seront remplacés par les nouvelles brosses animées.

Service des réclamations

Le livre 5DayForecast fonctionne très bien, mais j'ai eu quelques maux de tête en le mettant en place. J'utilise actuellement la version 1.56 de Helm. Certains des problèmes que j'ai rencontrés sont censés être résolus dans la version 1.61, la plus récente au moment où j'écris ces lignes. Cette version est en cours de publication, mais je ne l'ai pas reçue à temps pour la tester avant de soumettre cet article.

L'un des problèmes que j'ai rencontrés était inoffensif mais ennuyeux. Après avoir modifié le script pour la page 2 et ensuite exécuté le livre, les brosses animées appropriées ne se chargeaient pas dans les champs d'images de la page un. Cependant, les noms des jours et les températures étaient insérés correctement. Lorsque je suis revenu à la page 2, puis immédiatement à la page 1, tout a bien fonctionné. Quelque chose ne s'exécute pas correctement la première fois que la page 1 est activée après un changement de script de page. Ce problème est censé être corrigé dans la version 1.61.

Occasionnellement, la requête de fichiers retournait un entier long plutôt qu'un chemin et un nom de fichier. Ceci est censé être corrigé dans la version 1.61.

J'ai d'abord essayé de charger les brosses animées dans les champs d'images de la page 1 à partir du script "PageClose" de la page 2. Cela ne fonctionne pas. Apparemment, les champs d'images doivent être chargés après que la page qui les contient soit devenue active.

Si la combinaison de la résolution, de la taille et de la fréquence d'images des brosses animées sur une page dépasse une certaine valeur critique, tout contrôle du programme par l'utilisateur s'arrête. Helm donne apparemment la priorité à l'animation des images. Lorsque cette situation se produit, tout ce qui peut être fait est de redémarrer.

Helm a connu quelques plantages, mais pas beaucoup. En général, ils se sont produits lorsque la mémoire Chip était faible. Un plantage était particulièrement intéressant. L'écran de démarrage animé me demandant d'insérer la disquette Workbench est apparu. J'ai un disque dur et je n'insère jamais de disquette Workbench. Un salut à trois doigts a ramené les choses à la normale.

Après avoir affiché un script à partir de l'éditeur de script, le pointeur d'horloge ne disparaît pas, même lorsque le contrôle est rendu à l'utilisateur. Pour le faire disparaître, quittez le script, puis réintroduisez-le.

Si un champ d'image verrouillé est sélectionné, le menu "Image" est masqué. Après avoir sélectionné l'élément de menu "Edit/Unlock All" (Edition/Tout Déverrouiller), le menu "Image" est toujours masqué, même si le champ d'images est toujours sélectionné. Il faut sélectionner à nouveau le champ d'images après l'avoir déverrouillé pour que le menu "Image" apparaisse normalement.

Choses utiles

J'aimerais bien que le nom et l'étiquette d'un objet ne soient pas une seule et même chose. Parfois, l'étiquette de différents objets doit être la même, mais leurs noms différents.

J'aimerais qu'il y ait un moyen de définir la fréquence d'images d'une brosse animée avec une commande de script. Cela permettrait de définir la fréquence d'images au moment de l'exécution plutôt qu'au moment de la conception. Je crois que la version 1.61 a ajouté cette fonctionnalité.

Il doit y avoir plus de flexibilité dans la sélection des couleurs de bordure pour les objets. Actuellement, une bordure ne peut utiliser que des couleurs consécutives dans la palette.

La possibilité de modifier les propriétés communes de plusieurs objets simultanément est une fonctionnalité très attendue. Actuellement, la meilleure façon de donner des propriétés communes aux objets est de créer un objet, de définir ses propriétés, puis de le dupliquer. Toutefois, cela ne fonctionne que pour le même type d'objets, et non pour des objets différents. De plus, il arrive souvent que les propriétés d'un groupe d'objets soient initialement mal définies et qu'elles doivent être modifiées ultérieurement. Cette fonctionnalité est censée être dans la version 2.0 de Helm, mais je ne sais pas quand cette version sera disponible.

Bonnes choses

Même avec les problèmes que j'ai énumérés, Helm reste un excellent produit. Il y a tellement de fonctionnalités dans ce logiciel qu'il est difficile de croire qu'il est l'oeuvre d'un seul programmeur. Eagle Tree Software est très à l'écoute des réclamations des utilisateurs et y répond dans les prochaines versions.


[Retour en haut] / [Retour aux articles]