Comment utiliser une classe de document dans Flash

Nous apportons des modifications à Activetuts +. À partir de maintenant, nos tutoriels utiliseront du code basé sur les classes, au lieu du code du scénario, dans la mesure du possible. Ce petit conseil explique ce que vous devez savoir.


Pourquoi utiliser les fichiers de classe?

Je vais l'admettre - parfois, il est utile de coder entièrement sur la timeline. C'est un moyen rapide de tester un effet et le moyen le plus simple de synchroniser des actions sur des images spécifiques d'une animation..

Mais pour tout projet qui s'appuie davantage sur du code que sur de l'animation, il existe de sérieux inconvénients. Tout votre code ActionScript est emprisonné dans le fichier FLA; vous ne pouvez pas diviser la programmation entre différents développeurs, vous devez copier et coller du code si vous souhaitez le réutiliser, et vous êtes obligé d'utiliser le panneau Actions de Flash..

L'utilisation de fichiers de classe libère votre code. Et ce n'est vraiment pas plus difficile que de coder sur la timeline; cela implique juste un peu plus de préparation. Je vous expliquerai comment créer un projet Flash utilisant des classes, puis décomposer un fichier de classe en détail.

(Une partie de la raison pour laquelle nous passons aux classes est pour faciliter la tâche à nos développeurs qui n'utilisent pas Flash pour suivre nos tutoriels. Si vous en faites partie, je suppose que vous êtes déjà habitué à utiliser des classes. , mais vous pouvez toujours lire ce petit conseil en guise de mise à jour - ignorez simplement les éléments concernant Flash!)


Étape 1: Créer une FLA

Je suis sûr que vous savez déjà comment faire cela. Ouvrez Flash et cliquez Fichier> Nouveau… Fichier Flash (ActionScript 3.0). Enregistrez-le où vous voulez. J'ai appelé le mien Example.fla, mais peu importe le nom que vous choisissez.


Étape 2: Créer un fichier ActionScript

Cliquez sur Fichier> Nouveau… Fichier ActionScript. Enregistrer ceci sous Main.as dans le même dossier que votre FLA.

Ce fichier est l'endroit où nous allons mettre le code qui alimente la FLA elle-même, mais comment Flash saura-t-il le trouver?


Étape 3: Liez le fichier FLA au fichier AS

Vous pouvez avoir des dizaines de fichiers AS dans le même dossier que le fichier FLA. Flash ne veut donc pas deviner lequel utiliser. Nous devrons le dire.

Basculez vers l'outil de sélection (raccourci: V), puis assurez-vous de ne rien sélectionner (appuyez sur Ctrl-Maj-A). Ouvrez le panneau Propriétés (Fenêtre> Propriétés).

Si vous utilisez Flash CS3, cela ressemblera à ceci:

Panneau de propriétés de Flash CS3

Entrer Principale dans la zone intitulée "Classe de document" - pour correspondre au nom de votre fichier ActionScript, moins l'extension de fichier ".as"…

Si vous utilisez Flash CS4, cela ressemblera à ceci:

Panneau de propriétés de Flash CS4

Dans ce cas, vous devrez entrer Principale dans la case "Classe". Pour une raison quelconque, Adobe a abandonné le bit "Document".


Étape 4: (facultatif) réorganisez la structure de votre dossier

Vous n'êtes pas obligé de garder tous vos fichiers dans le même répertoire. Jetez un coup d'œil à cette projection rapide pour savoir comment déplacer des objets..


Étape 5: écrivez votre classe de document

Ouvrez votre fichier Main.as et collez le code suivant:

 package import flash.display.MovieClip; Classe publique Main étend MovieClip fonction publique Main () 

C'est une classe de document vide de base. C'est la plus petite quantité de code que nous pouvons écrire qui sera réellement exécutée. Permettez-moi de le décomposer:

Le mot clé package indique à Flash que tout le code entre ses accolades fait partie d'un seul groupe.

Le mot clé package indique à Flash que tout le code entre ses accolades fait partie d'un seul groupe..

La classe mot-clé regroupe les fonctions et les variables.

L'écriture classe principale également les groupes de code ensemble, mais d'une manière différente. Les classes contiennent des fonctions et des variables; les packages contiennent des classes et des instructions d'importation.

Remarque: vous devez donner à votre classe le même nom que le fichier AS: Principale.

Qu'en est-il de Publique? Cela signifie simplement que les autres classes de votre code pourront voir cette classe..

Nous voulons que notre classe étende les fonctionnalités d'un MovieClip normal - par conséquent, la classe Main étend MovieClip.

Cette classe Principale va alimenter notre FLA. Par défaut, notre fichier FLA est un clip vidéo (il a une timeline).

Nous voulons Principale être capable de faire tout ce qu'un clip peut faire, plus encore en fonction du code que nous écrivons. En d'autres termes, nous voulons étendre la fonctionnalité d'un habitué MovieClip.

(Parfois, nous n'avons pas besoin de faire d'animation sur le scénario principal de la scène; dans ce cas, nous n'avons pas besoin d'étendre MovieClip, nous pouvons simplement étendre Sprite à la place. MovieClip étend lui-même Sprite, mais ajoute des fonctionnalités supplémentaires pour l'animation, comme le nextFrame () une fonction. Donc, si vous ne savez pas si vous devez étendre MovieClip ou Sprite, optez pour MovieClip - c'est plus sûr!)

La ligne

MovieClip est lui-même une classe.

Flash ne surveille pas automatiquement l'emplacement de stockage de tous ses fichiers de classe. pour notre étend MovieClip Pour que le code fonctionne, nous devons indiquer à Flash où trouver la classe MovieClip. C'est ce que le importation la ligne fait.

Les instructions d'importation vont toujours à l'intérieur du paquet et à l'extérieur de la classe, en haut.

Chaque classe contient une fonction portant le même nom que la classe. Le code qu'il contient est exécuté lorsqu'un objet de ce type de classe est créé, dans notre cas, lorsque le fichier SWF est chargé.

Chaque classe contient une fonction portant le même nom que la classe. Ça s'appelle le constructeur une fonction.

Tout le code à l'intérieur de cette fonction est exécuté lorsqu'un objet de ce type de classe est créé - dans notre cas, le code entre ces accolades sera exécuté lorsque le fichier SWF est chargé..

Ne vous inquiétez pas si vous sentez que vous ne comprenez pas encore tout cela. Une fois que vous aurez commencé à utiliser les cours et à écrire les vôtres, tout se mettra en place.


Étape 6: Faites-le faire Quelque chose

Comme je l’ai dit à l’étape 5, la fonction constructeur contient le tout premier code à exécuter lorsque votre fichier SWF est chargé. Alors mettons quelque chose ici pour nous assurer que tout fonctionne:

 package import flash.display.MovieClip; classe publique Main étend MovieClip fonction publique Main () trace ("Oui, ça marche"); 

La ligne 8 est la seule nouvelle ici. Testez votre SWF de la manière habituelle (Contrôle> Tester le film). Si tout va bien, vous devriez voir "Oui, ça marche" dans le panneau de sortie. Si non…

  • Avez-vous enregistré les modifications apportées à Main.as??
  • La classe de document de votre FLA est-elle définie sur Principale?
  • Voulez-vous tester le film Example.fla??

Si aucune de ces questions ne vous aide, veuillez poster un commentaire..


Étape 7: essayez quelque chose d'un peu plus complexe

Essayez de remplacer votre code Main.as par ceci:

 package import flash.display.MovieClip; classe publique Main étend MovieClip fonction publique Main () var greeting: String = "Hello"; trace (salutation); 

Simple, non? Nous venons de créer une nouvelle variable String dans la fonction constructeur. Ajoutons maintenant une nouvelle fonction:

 package import flash.display.MovieClip; classe publique Main étend MovieClip fonction publique Main () var greeting: String = "Hello"; changeGreetingToFrench (); trace (salutation);  fonction publique changeGreetingToFrench (): void greeting = "Bonjour"; 

Il y a quelques choses à noter ici.

Tout d'abord, la nouvelle fonction va à l'intérieur de la classe, et après le constructeur - par convention, le constructeur est la première fonction de la classe.

Deuxièmement, la nouvelle fonction est Publique; lors du codage à l'intérieur d'une classe (et non sur la timeline), il est judicieux de mettre "public" (ou "privé" ou "protégé", mais je les laisserai pour un autre post) au début de la ligne qui définit la fonction. . C'est juste un moyen de faire savoir aux autres classes si elles peuvent ou non y accéder.

Troisièmement, la définition de la nouvelle fonction se termine par :vide. Cela signifie simplement qu'il ne retourne pas de valeur. Les fonctions de constructeur n'ont pas besoin de :vide parce qu'ils ne peut pas renvoyer une valeur.

Si vous testez ce film, vous recevrez un message d'erreur:

Main.as, ligne 15: 1120: accès au message d'accueil de propriété non défini.

Lorsque vous créez une variable dans une fonction, les autres fonctions ne peuvent y accéder. Si vous voulez que toutes les fonctions de la classe puissent accéder à la variable, vous devez la déclarer à l'intérieur de la classe, mais à l'extérieur toutes les fonctions:

 package import flash.display.MovieClip; classe publique Main étend MovieClip salutation var publique: String = "Hello"; fonction publique Main () changeGreetingToFrench (); trace (salutation);  fonction publique changeGreetingToFrench (): void greeting = "Bonjour"; 

Comme pour les fonctions, si vous déclarez une variable en dehors d'une fonction, vous devez la démarrer avec "public" (ou "privé" ou "protégé"). Contrairement aux fonctions, les variables doivent être définies au dessus de le constructeur.

Testez votre film maintenant et vous devriez enfin recevoir une belle salutation en français. Comment utile!


Emballer

Donc, ce n'est pas exactement un résultat excitant, mais j'espère que vous vous sentez maintenant capable de suivre des tutoriels qui ne codent pas sur la timeline.

Je veux vraiment m'assurer que tout le monde comprend comment utiliser une classe de documents. Alors, s'il vous plaît, si l'une de ces choses n'était pas claire, postez une note dans les commentaires. Une fois que nous aurons résolu le problème, je modifierai le conseil afin de faciliter la compréhension de la personne suivante. Merci :)