Définitions de classe

En ActionScript 3.0, les définitions de classe utilisent la même syntaxe qu'en ActionScript 2.0. La syntaxe correcte d'une définition de classe utilise le mot-clé class suivi du nom de la classe. Le corps de la définition de classe est inséré entre des accolades ({}) après le nom de la classe. Par exemple, le code suivant crée une classe nommée Shape et contenant une seule variable, nommée visible:

public class Shape
{
    var visible:Boolean = true;
}

Notez que la syntaxe est différente dans le cas des définitions de classe faisant partie d'un paquet. En ActionScript 2.0, si une classe fait partie d'un paquet, le nom de ce dernier doit figurer dans la déclaration de classe. Comme l'instruction package a été introduite en ActionScript 3.0, le nom du paquet doit figurer dans la déclaration de paquet et non pas dans la déclaration de classe. Par exemple, les déclarations de classe suivantes montrent comment définir la classe BitmapData, qui fait partie du paquet flash.display, respectivement en ActionScript 2.0 et en ActionScript 3.0 :

// ActionScript 2.0
class flash.display.BitmapData {}

// ActionScript 3.0
package flash.display
{
    public class BitmapData {}
}

Sous-rubriques

Attributs de classe
Corps de la classe

Attributs de classe

ActionScript 3.0 permet de modifier les définitions de classe à l'aide de l'un des quatre attributs suivants :

Attribut

Définition

dynamic

Permet d'ajouter des propriétés aux instances lors de l'exécution.

final

Ne doit pas être étendue par une autre classe.

internal (par défaut)

Visible pour les références à partir du paquet actuel.

public

Visible pour les références à partir de n'importe quel point du code.

Pour chacun de ces attributs, à l'exception de internal, vous devez inclure l'attribut explicitement pour obtenir le comportement qui lui est associé. Par exemple, faute d'inclure l'attribut dynamic lors de la définition d'une classe, vous ne pourrez pas ajouter des propriétés à une instance d'une classe lors de son exécution. Pour affecter explicitement un attribut, placez-le au début de la définition de la classe, comme dans le code ci-dessous :

dynamic class Shape {}

Notez que cette liste ne comprend pas l'attribut nommé abstract. En effet, les classes abstraites ne sont pas prises en charge en ActionScript 3.0. Notez également que cette liste ne comprend pas non plus les attributs private et protected. Ces attributs n'ont de sens qu'à l'intérieur d'une définition de classe et ne peuvent pas être appliqués aux classes elles-mêmes. Si vous ne souhaitez pas qu'une classe soit visible à l'extérieur de son paquet, placez cette classe dans un paquet et affectez-lui l'attribut internal. Vous pouvez aussi omettre les attributs internal et public. Dans ce cas, le compilateur ajoutera automatiquement l'attribut internal. Si vous ne souhaitez pas qu'une classe soit visible à l'extérieur du fichier source dans lequel elle est définie, placez-la à la fin de ce fichier source, après l'accolade de fin de la définition de paquet.

Corps de la classe

Le corps de la définition de classe, qui est inséré entre des accolades, permet de définir les variables, constantes et méthodes de la classe. L'exemple suivant montre la déclaration de la classe Accessibility dans l'API d'Adobe Flash Player :

public final class Accessibility
{
    public static function get active():Boolean;
    public static function updateProperties():void;
}

Il est également possible de définir un espace de nom dans le corps d'une classe. L'exemple suivant montre la définition d'un espace de nom dans le corps d'une classe et son utilisation comme attribut d'une méthode de cette classe :

public class SampleClass
{
    public namespace sampleNamespace;
    sampleNamespace function doSomething():void;
}

ActionScript 3.0 permet d'inclure dans le corps d'une classe non seulement les définitions, mais aussi des instructions. Les instructions qui figurent dans le corps d'une classe, mais hors d'une définition de méthode, sont exécutées une seule fois, lors de la première apparition de la définition de classe et de la création de l'objet class qui lui est associé. L'exemple suivant comporte un appel à une fonction externe, hello(), et une instruction trace qui affiche un message de confirmation lors de la définition de la classe :

function hello():String
{
    trace("hola");
}
class SampleClass
{
    hello();
    trace("class created");
}
// affichage lorsque la classe est créée.
hola
class created

Contrairement aux versions antérieures d'ActionScript, en ActionScript 3.0 il est permis de définir une propriété static et une propriété d'instance ayant le même nom dans le corps de la même classe. Par exemple, le code suivant déclare une variable statique message et une variable d'instance ayant le même nom :

class StaticTest
{
    static var message:String = "static variable";
    var message:String = "instance variable";
}
// dans le script
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // résultat : variable statique
trace(myST.message);       // résultat : variable de l'instance

Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000061.html