Nous avons vus, dans les précédent posts, les bases pour la création de classe en ActionScript 2.0. Maintenant, rentrons dans le vif du sujet, et développons notre classe Voiture complètement.
Déclaration de la classe Voiture:
Avant toutes choses, il fait commencer par créer un nouveau document (fichier) pour déclarer notre classe. Pour ce faire, soit vous utilisez directement l'IDE de Flash, soit un éditeur de texte tiers.
Dans le Flash IDE, choisissez "
Créer un nouveau fichier ActionScript"
Comme nous l'avons vu, il faut déclarer le nom et le package de notre classe:
ActionScript Code:
class com.dossier.Voiture
{
}
Notre classe Voiture est donc dans le package com.dossier, donc sauvegardé dans le répertoire com\dossier\Voiture.as. Attention au majuscule !
Ajoutons maintenant des propriétés à notre classe. Nous allons déclarer 5 propriétés :
- Propriété qui va stockée le nom du fabricant de la voiture
- Propriété qui va stockée le modèle de la voiture
- Propriété qui va stockée l'année de la voiture
- Propriété qui va stockée le nombre de kilomètre au compteur
- Propriété qui va stockée un ID pour l'utilisation d'une fonction setInterval
ActionScript Code:
class com.dossier.Voiture
{
private var _sFabricant:String;
private var _sModele:String;
private var _nAnnee:Number;
private var _nKilometres:Number;
private var _nIntervalle:Number;
}
Maintenant passons au constructeur de notre classe. Nous allons le définir de manière explicite, de façon à donner des paramètres, en entrée de notre constructeur.
Je rappelle que si un constructeur n'est pas défini, Flash en créé un, implicitement, vide ! Quand nous créérons une instance de notre classe Voiture, on va lui donner comme paramètre :
- Le nom du fabricant
- Le nom du modèle
- L'année
- Le kilométrage au compteur
Cependant, afin de vérifier le bon sens de nos données, 2 valeurs (kilomètre et année) ne vont pas être affecté directement à nos propriétés correspondantes. On va utiliser les Setter afin de vérifier si ces valeurs sont correctes ou non, avant l'affectation. (ex kilometrage < 0):
ActionScript Code:
class com.dossier.Voiture
{
private var _sFabricant:String;
private var _sModele:String;
private var _nAnnee:Number;
private var _nKilometres:Number;
private var _nIntervalle:Number;
function Voiture(sFabricant:String, sModele:String, nAnnee:Number, nKilometre:Number) {
_sFabricant = sFabricant;
_sModele = sModele;
annee = nAnnee;
kilometre = nKilometre;
}
}
Comme vous le constaterez, les
2 propriétés annee et kilometre seront des méthodes Setter.
Maintenant que les propriétés sont définies, nous allons ajouter des méthodes à notre classe:
- Une méthode conduire
- Une méthode ajoutKilometre (qui sera elle appelé via un interval)
Cette méthode sera appelée une fois la méthode conduire executée et si celle ci à
un nombre valide de kilomètre:
ActionScript Code:
class com.dossier.Voiture
{
private var _sFabricant:String;
private var _sModele:String;
private var _nAnnee:Number;
private var _nKilometres:Number;
private var _nIntervalle:Number;
function Voiture(sFabricant:String, sModele:String, nAnnee:Number, nKilometre:Number) {
_sFabricant = sFabricant;
_sModele = sModele;
annee = nAnnee;
kilometre = nKilometre;
}
public function conduire(nKMH:Number):Void {
if(nKMH == null || nKMH == 0) {
clearInterval(_nIntervalle);
}
else {
_nIntervalle = setInterval(this, "ajoutKilometre", 1000, nKMH);
}
}
private function ajoutKilometre(nKMH:Number):Void {
_nKilometres += nKMH;
}
}
Les méthodes sont bien implémentées, il ne reste plus qu'à déclarer nos Getter & Setter
Ces méthodes sont là pour assurer la validité de nos valeurs, et bien entendu, donner la possibilité d'un accès à nos propriétés privée en dehors de la classe, c'est à dire un accès via l'instance que nous allons créer. Par habitude,
il faut déclarer les Getter & Setter juste après le constructeur :
ActionScript Code:
class com.dossier.Voiture
{
private var _sFabricant:String;
private var _sModele:String;
private var _nAnnee:Number;
private var _nKilometres:Number;
private var _nIntervalle:Number;
function Voiture(sFabricant:String, sModele:String, nAnnee:Number, nKilometre:Number) {
_sFabricant = sFabricant;
_sModele = sModele;
annee = nAnnee;
kilometre = nKilometre;
}
public function get fabricant():String {
return _sFabricant;
}
public function get modele():String {
return _sModele;
}
public function get annee():Number {
return _nAnnee;
}
public function set annee(nAnnee:Number):Void {
if (nAnnee >= 1886) {
_nAnnee = nAnnee;
}
else {
_nAnnee = 1886;
}
}
public function get kilometre():Number {
return _nKilometres;
}
public function set kilometre(nKilometres:Number):Void {
if(nKilometres >= 0) {
_nKilometres = nKilometres;
}
else {
_nKilometres = 0;
}
}
public function conduire(nKMH:Number):Void {
if(nKMH == null || nKMH == 0) {
clearInterval(_nIntervalle);
}
else {
_nIntervalle = setInterval(this, "ajoutKilometre", 1000, nKMH);
}
}
private function ajoutKilometre(nKMH:Number):Void {
_nKilometres += nKMH;
}
}
Vous remarquerez que de part la définition ou non de certains Getter & Settercertaines propriétés sont en lecture seule.
La propriété _sFabricant une fois affectée par le constructeur ne peut plus être modifiée.
Seule la lecture de cette variable est autorisée. Notre classe est terminée pour le moment. Voyons maintenant comment l'instancier et surtout comment "conduire" cette voiture.
Utilisation de la classe :
Enregistrer biensur votre
Voiture.as, et
créer un nouveau fichier fla.
Attention! pour réaliser un test simple, je vous conseille d'enregistrer ce fichier au même endroit que votre repertoire com de votre package. Si ce n'est pas le cas, veuillez modifier le classpath de votre fichier fla. (Notion vue dans un post prédécent).
Mettez vous sur la première image de votre timeline et ouvrez le panneau ActionScript (F9).
Dans un premier temps, nous allons importer notre classe.
Ensuite, nous devons créer une instance de la classe voiture. Ce qui reviendrait à dire, nous allons créer notre voiture ! Pour créer une instance d'une classe, nous allons utiliser le mot clés : new suivi du nom de notre classe et plus exactement de notre constructeur.
En effet, instancier une classe revient à executer la methode constructeur de la classe:
ActionScript Code:
var voiture:Voiture = new Voiture("SEAT", "LEON", 2001, 55000);
On observe bien que notre constructeur est appelé avec les paramètres nécessaires, définis plus haut. Je viens donc de créer une Seat Leon de 2001 avec 55000 Kilomètres au compteur. Et cette voiture est accessible via la variable voiture qui represente une instance de la classe Voiture.
On va maintenant conduire notre voiture non? Pour cela, appelons la méthode conduire de notre classe. Cette méthode attend une vitesse (un nombre) comme paramètre. Etant en ville, on va rouler à 50km/h.....
Et voilà, notre voiture est en train de rouler tranquillement à 50 Km/h… C'est bien joli, mais pour en être sûr, on va ajouter une petite fonction qui va afficher, toutes les secondes, les kilomètres au compteur de notre voiture. Cette fonction appelera la méthode kilometre, qui n'est ni plus ni moins qu'une méthode Getter de notre classe. Voici donc le code complet du fichier fla :
ActionScript Code:
//On importe le package com.erom où se trouve notre classe.
import com.erom.Voiture;
//Fonction qui va affichée les kilomètres au compteur de notre voiture
function displayKilometrage(voitureObj:Voiture):Void {
//Appel d'un Getter de notre classe
trace(voitureObj.kilometre);
}
//Création de l'objet voiture
var voiture:Voiture = new Voiture("SEAT", "LEON", 2001, 55000);
//On va rouler à 50 Km/h
voiture.conduire(50);
//On affiche le kilométrage toute les secondes
setInterval(displayKilometrage, 1000, voiture);
Source : Adddvance.net