Cours Actionscript

Cours de programmation avec Actionscript 3.0 pour débutant


Télécharger Cours de programmation avec Actionscript 3.0 pour débutant

★★★★★★★★★★1 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours de programmation avec Actionscript 3.0 pour débutant

...

Chapitre 1 : Utilisation des dates et des heures

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Si la ponctualité ne fait pas tout, elle n’en est pas moins un facteur clé des applications logicielles. ActionScript 3.0 propose différentes méthodes de gestion des dates calendaires, des heures et des intervalles temporels. Deux classes principales assurent l’essentiel de la fonctionnalité temporelle : la classe Date et la nouvelle classe Timer du package flash.utils.

Les dates et les heures constituent un type d’informations courant utilisé dans les programmes ActionScript. Par exemple, vous pouvez, entre autres, connaître la date du jour ou calculer combien de temps un utilisateur passe sur un écran particulier. Dans ActionScript, vous pouvez utiliser la classe Date pour représenter un moment unique dans le temps, y compris des informations de date et d’heure. Une occurrence de Date contient des valeurs pour les unités de date et d’heure individuelles (année, mois, date, jour de la semaine, heure, minutes, secondes, millisecondes et fuseau horaire, par exemple). Pour des utilisations plus avancées, ActionScript comprend également la classe Timer que vous pouvez utiliser pour effectuer des actions après un certain délai ou à des intervalles répétés.

Voir aussi Date

flash.utils.Timer

Gestion des dates calendaires et des heures

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Dans ActionScript 3.0, toutes les fonctions de gestion des dates calendaires et des heures se concentrent autour de la classe de niveau supérieur Date. Cette classe contient des méthodes et des propriétés qui vous permettent de manier les dates et les heures soit selon le modèle universel coordonné (UTC, Universal Time Coordinated), soit selon le fuseau horaire considéré. L’UTC est une définition normalisée du temps qui correspond essentiellement à l’heure du méridien de Greenwich (GMT, Greenwich Mean Time).

Création d’objets Date

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

La classe Date compte l’une des méthodes constructeur les plus polyvalentes de toutes les classes de base. Vous pouvez l’invoquer de quatre manières différentes.

Primo, si aucun paramètre n’est fourni, le constructeur Date() renvoie un objet Date contenant la date et l’heure locale actuelle de votre fuseau horaire. Exemple :

var now:Date = new Date();

Secundo, si un paramètre numérique unique est fourni, le constructeur Date() le considère comme le nombre de millisecondes écoulées depuis le 1er janvier 1970 et renvoie l’objet Date correspondant. Notez que la valeur en millisecondes que vous transmettez est considérée comme le nombre de millisecondes depuis le 1er janvier 1970 en temps UTC. Toutefois, l’objet Date affiche des valeurs dans votre fuseau horaire local, sauf si vous utilisez des méthodes UTC uniquement pour les extraire et les afficher. Si vous créez un nouvel objet Date à l’aide du paramètre en millisecondes, veillez à tenir compte du décalage horaire entre votre fuseau local et le temps UTC. Les instructions ci-après créent un objet Date défini à minuit le 1er janvier 1970 en temps UTC :

var millisecondsPerDay:int = 1000 * 60 * 60 * 24;

// gets a Date one day after the start date of 1/1/1970

var startTime:Date = new Date(millisecondsPerDay);

Tertio, vous pouvez transmettre plusieurs paramètres numériques au constructeur Date(). Celui-ci les traite respectivement comme la date, le mois, le jour, les heures, les minutes, les secondes et les millisecondes, et renvoie un objet Date correspondant. Les paramètres indiqués sont considérés comme correspondant à l’heure locale plutôt qu’au temps UTC. Les instructions suivantes établissent un objet Date défini à minuit le 1er janvier 2000, dans le fuseau horaire local :

var millenium:Date = new Date(2000, 0, 1, 0, 0, 0, 0);



Quarto, vous pouvez transmettre un paramètre numérique unique au constructeur Date(). Celui-ci essaiera d’analyser cette chaîne en composants de date et heure, et de renvoyer un objet Date correspondant. Si vous choisissez cette approche, il est recommandé d’inclure le constructeur Date() dans un bloc try..catch afin d’intercepter toute erreur d’analyse. Le constructeur Date() gère plusieurs formats de chaîne (dont la liste figure dans le manuel Guide de référence ActionScript 3.0 pour la plate-forme Adobe Flash). L’instruction suivante initialise un nouvel objet Date à l’aide d’une valeur chaîne :

var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");

Si le constructeur Date() ne peut analyser le paramètre chaîne, il ne déclenche pas d’exception. Cependant, l’objet

Date résultant contiendra une valeur date incorrecte.

Obtention des valeurs d’unités temporelles

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Vous pouvez extraire les valeurs de plusieurs unités temporelles au sein de l’objet Date grâce à des propriétés ou des méthodes de la classe Date. Chacune des propriétés suivantes fournit la valeur d’une unité temporelle de l’objet Date :

  • La propriété fullYear
  • La propriété month au format numérique : de 0 pour janvier à 11 pour décembre
  • La propriété date, qui correspond au numéro calendaire du jour du mois, de 1 à 31
  • La propriété day, qui correspond au jour de la semaine au format numérique, 0 représentant dimanche
  • La propriété hours, de 0 à 23
  • La propriété minutes
  • La propriété seconds
  • La propriété milliseconds

La classe Date offre en fait plusieurs manières d’obtenir ces valeurs. Vous pouvez par exemple obtenir la valeur month de l’objet Date de quatre manières :

  • La propriété month
  • La méthode getMonth()
  • La propriété monthUTC
  • La méthode getMonthUTC()

Ces quatre solutions sont d’une efficacité équivalente, vous pouvez donc adopter celle qui convient le mieux à votre application.

Les propriétés répertoriées ci-dessus représentent toutes des composants de la valeur date totale. Par exemple, la propriété milliseconds ne sera jamais supérieure à 999, puisque si elle atteint 1000, la valeur seconds augmente de 1, la propriété milliseconds se remet à zéro.

Si vous voulez obtenir la valeur de l’objet Date en millisecondes depuis le 1er janvier 1970 (UTC), vous pouvez

utiliser la méthode getTime(). La méthode setTime(), quant à elle, vous permet de modifier la valeur d’un objet

Date existant en millisecondes depuis le 1er janvier 1970 (UTC).

Opérations arithmétiques sur la date et l’heure

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

La classe Date permet d’additionner et de soustraire des dates et heures. Les valeurs Date sont conservées en interne sous forme de millisecondes. Il est donc nécessaire de convertir les autres valeurs en millisecondes avant de les ajouter ou de les soustraire aux objets Date.

Si votre application doit effectuer de nombreuses opérations arithmétiques sur les dates et heures, il peut s’avérer utile de créer des constantes qui conservent les valeurs d’unités temporelles courantes en millisecondes, comme illustré ciaprès :

public static const millisecondsPerMinute:int = 1000 * 60;

public static const millisecondsPerHour:int = 1000 * 60 * 60;

public static const millisecondsPerDay:int = 1000 * 60 * 60 * 24;

Il devient alors simple d’effectuer des opérations arithmétiques à l’aide des unités temporelles standard. Le code ciaprès décale la valeur date d’une heure par rapport à l’heure actuelle à l’aide des méthodes getTime() et setTime() :



var oneHourFromNow:Date = new Date();

oneHourFromNow.setTime(oneHourFromNow.getTime() + millisecondsPerHour);

Une autre manière de définir une valeur date consiste à créer un objet Date à l’aide d’un seul paramètre en millisecondes. Par exemple, le code suivant ajoute 30 jours à une date pour en calculer une autre :

// sets the invoice date to today's date

var invoiceDate:Date = new Date();

// adds 30 days to get the due date

var dueDate:Date = new Date(invoiceDate.getTime() + (30 * millisecondsPerDay));

La constante millisecondsPerDay est ensuite multipliée par 30 pour représenter la période de 30 jours et le résultat est ajouté à la valeur invoiceDate afin de définir la valeur dueDate.

Conversion entre plusieurs fuseaux horaires

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Les opérations arithmétiques sur les dates et heures sont particulièrement pratiques lorsque vous devez convertir des dates d’un fuseau horaire à un autre. Tel est le rôle de la méthode getTimezoneOffset(), qui renvoie la valeur (en minutes) de décalage entre le fuseau horaire de l’objet Date et le temps UTC. La valeur renvoyée s’exprime en minutes parce que tous les fuseaux horaires ne correspondent pas à une heure ; certains sont décalés d’une demi-heure par rapport aux fuseaux voisins.

L’exemple suivant utilise le décalage de fuseau horaire pour convertir une date à partir de l’heure locale en temps UTC.

La conversion s’effectue tout d’abord par calcul de la valeur du fuseau horaire en millisecondes, puis par ajustement de la valeur Date selon ce montant :

// creates a Date in local time

var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");

// converts the Date to UTC by adding or subtracting the time zone offset

var offsetMilliseconds:Number = nextDay.getTimezoneOffset() * 60 * 1000;

nextDay.setTime(nextDay.getTime() + offsetMilliseconds);

Contrôle des intervalles temporels

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Lorsque vous développez des applications à l’aide d’Adobe Flash CS4 Professional, vous avez accès au scénario, qui fournit une progression constante, image par image, au sein de votre application. Toutefois, dans un projet purement ActionScript, vous devez compter sur d’autres mécanismes temporels.

Boucles ou minuteurs ?

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Dans certains langages de programmation, vous devez mettre au point des motifs temporels à l’aide d’instructions en boucle telles que for ou do..while.

Les instructions en boucle s’exécutent en général aussi vite que la machine locale le permet, ce qui signifie que l’application sera plus rapide sur certaines machines que sur d’autres. Si votre application doit bénéficier d’un intervalle temporel cohérent, vous devez l’associer à un calendrier ou une horloge réels. Bien des applications, telles que les jeux, les animations, les contrôleurs en temps réel, nécessitent des mécanismes de décompte temporel qui soient cohérents d’une machine à l’autre.

La classe Timer d’ActionScript 3.0 offre une solution performante dans ce domaine. Grâce au modèle d’événements ActionScript 3.0, la classe Timer distribue des événements Timer dès qu’un intervalle spécifié est atteint.

La classe Timer

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Pour la gestion des fonctions temporelles dans ActionScript 3.0, il est recommandé d’utiliser la classe Timer (flash.utils.Timer), qui permet de distribuer des événements dès qu’un intervalle est atteint.n>

Pour lancer un minuteur, vous devez d’abord créer une occurrence de la classe Timer et lui indiquer à quelle fréquence elle doit générer un événement Timer et combien de fois elle doit le faire avant de s’arrêter.



Par exemple, le code suivant crée une occurrence de Timer qui distribue un événement toutes les secondes pendant 60 secondes :

var oneMinuteTimer:Timer = new Timer(1000, 60);

L’objet Timer distribue un objet TimerEvent chaque fois que l’intervalle donné est atteint. Le type d’événement de l’objet TimerEvent est timer (défini par la constante TimerEvent.TIMER). Un objet TimerEvent contient les mêmes propriétés que l’objet standard Event.

Si l’occurrence de Timer prévoit un nombre fixe d’intervalles, elle distribue également un événement timerComplete (défini par la constante TimerEvent.TIMER_COMPLETE) lorsqu’elle atteint l’intervalle final.

Voici un court exemple d’application illustrant la classe Timer en action :

package

{

import flash.display.Sprite;

import flash.events.TimerEvent;

import flash.utils.Timer;

public class ShortTimer extends Sprite

{

public function ShortTimer()

{

// creates a new five-second Timer

var minuteTimer:Timer = new Timer(1000, 5);

// designates listeners for the interval and completion events

minuteTimer.addEventListener(TimerEvent.TIMER, onTick);

minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);

// starts the timer ticking

minuteTimer.start();

}

public function onTick(event:TimerEvent):void

{

// displays the tick count so far

// The target of this event is the Timer instance itself.

trace("tick " + event.target.currentCount);

}

public function onTimerComplete(event:TimerEvent):void

{

trace("Time's Up!");

}

}

}

Lorsque la classe ShortTimer est créée, elle génère une occurrence de Timer qui marque chaque seconde pendant cinq secondes. Elle ajoute alors deux écouteurs au minuteur : un qui écoute chaque décompte et un qui écoute l’événement timerComplete.

Elle lance ensuite le décompte du minuteur et à partir de là, la méthode onTick() s’exécute toutes les secondes.

La méthode onTick() affiche simplement le nombre actuel de tics. Après cinq secondes, la méthode onTimerComplete() s’exécute et vous avertit que le temps est écoulé.

Si vous exécutez cet exemple, vous devriez voir les lignes suivantes s’afficher dans votre console ou fenêtre de suivi à raison d’une ligne par seconde :

tick 1

tick 2

tick 3

tick 4

tick 5

Time's Up!

Fonctions temporelles du package flash.utils

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures ActionScript 3.0 contient un certain nombre de fonctions temporelles similaires à celles qui étaient disponibles dans ActionScript 2.0. Ces fonctions sont fournies au niveau du package dans le package flash.utils et elles fonctionnent de la même manière que dans ActionScript 2.0.



221