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.
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!)
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.
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?
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:
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:
Dans ce cas, vous devrez entrer Principale dans la case "Classe". Pour une raison quelconque, Adobe a abandonné le bit "Document".
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..
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..
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..
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!)
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. Ç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.
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…
Si aucune de ces questions ne vous aide, veuillez poster un commentaire..
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!
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 :)