Avec ce tutorial (tutoriel
?) je vais
expliquer un peu comment il est possible de faire du flash (en fait
du "swf" mais par abus de langage on dit flash) sans Flash (le logiciel
cette fois ci). Donc la question de base c'est :
"Mais pourquoi ???" et la réponse que je donne n'est pas de
moi -je l'ai vue sur ipodlinux- mais elle est celle-ci :
"parcequ'on peut !!!".
Si effectivement ces
solutions ne
permettent pas aujourd'hui d'être concurenciel dans le milieu
de
la communication web, elles ne sont pas pour autant inexploitables.
Elles peuvent s'intégrer dans la chaîne de
production et
permettent d'optimiser les temps de travail. Qui dit optimisation, dit
pognon !
Il n'y a pas encore si longtemps, tous les développeurs
flash codaient directement dans l'ide de Flash.
Puis, ils ont commencé à externaliser leurs
sources -code
et swf compilés-. Ils utilisaient déjà
des
solutions open source pour combler les lacunes de Flash (ex: Ming pour
transformer des jpegs en swf). Ils ont tout de suite adopté
des éditeurs externes (Scite|Flash,
sepy,
etc...). Aujourd'hui, tout bon développeur utilise MTASC
(couplé avec un éditeur comme sepy, Eclipse, flashdevelopp)
pour gagner en temps de travail. Il existe maitenant
pléthore de
logiciels open source qui une fois réunis pourront peut
être concurencer Flash.
Pour l'instant, tout ceci n'est que de la branlette mais ca nous fait quand même bien marrer !
1 Installation
Pour commencer, ya plein de trucs chiants
à faire :
1 – 1 Télécharger tous
les outils pour pouvoir travailler :
à ce jour les versions des logiciels sont les suivantes :
Eclipse
3.1.1
MTASC 1.11
SwfMill 0.2.11
as2ant 1.0 alpha
ASDT 0.0.8 build 5 (unstable version)
C'est un sacré joyeux bordel mais je vais expliquer succintement à quoi sert tout ça.
Eclipse est un environement complet de développement open source. Il a toutes les fonctionnalités de base comme tous les bons éditeurs de code (autocomplétion, des choses pour parcourir vos classes, des aides, de la doc, des templates de code etc etc...). Il existe énormément de plugins pour ce soft.
Mais malheureusement, notre ami Eclipse ne connait pas du tout l'ActionScript en natif. Mais grace à son systeme de téléchargement de plugins, on joutera la “perspective” ActionScript.
MTASC est un compilateur. C'est lui qui va nous pondre des swf entre autre.
SwfMill est compilateur aussi. Il va nous permettre de générer des bibliothèques (swf) que l'on pourra ensuite utiliser (fonts, clips, composants, images).
as2ant : est une extension d'ant logiciel écrit en java qui permet la construction de tout un projet (compilation de bibliothèques, sources ou encore d'autres tâches) au sein même d'Eclipse.
ASDT est un plugin pour Eclipse qui défini une “perspective” spéciale pour le developpement Flash.
En fait, ce plugin ajoute (ou enlève) des fonctionnalités à l'interface dès que vous travaillez sur un projet Flash (“file > new > ActionScript Projetct” par exemple).
Il comprend aussi la coloration syntaxique et l'autocomplétion (couplé avec MTASC qui vérifie la bonne syntaxe du code, ainsi qu'une aide formidable de debuggage “automatique”).
1 – 2 Installation de tous ces trucs
On va créer un répertoire “flashos” et on y “installera” tous les outils. Je mets “installer” entre guillemets car ces logiciels ne requièrent pas d'installation. Il suffit de les décompresser. A tout moment vous pouvez supprimer le dossier flashos, cela n'affectera en rien votre os. Vous ne vous retrouvez pas avec des logiciels en trop sur votre disque ou d'autres éventuels spyware etc...
La premiere chose à faire est de décompresser Eclipse, puis MTASC, puis swfMill et enfin as2ant dans ce répertoire “flashos”. Pour les utilisateurs de linux, il faut juste compiler swfMill (un petit # ./configure vous dit si vous avez toutes les bibliothèques, puis un # make , # make install comme d'hab si vous galérez à installer/compiler, rendez vous sur le site de swfMill).
J'ai renomé les
repertoires par
défaut pour une meilleure lisibilité :
urs par compiler le bouzin en dernier mais ça peut effectivement faire
Bon, il reste ASDT
à télécharger. Pour
ça
il faut lancer Eclipse.
Au premier lancement, Eclipse
va vous demander
un répertoire de travail par défaut. Je vais
utiliser un
classique "workgroup" dans le répertoire "flashos". Masquez
ensuite le message de bienvenue, cliquez sur "help", puis "Software
Updates > Find and Install...". Une pop up apparait,
séléctionnez "Search for new features", une autre
page se
pointe. Cliquez sur "New remote Site", entrez "ASDT" dans le champ
"Name" et "http://aseclipseplugin.sourceforge.net/updates" dans le
champ "URL". Cliquez sur "ok" pour fermer la fenêtre.
Séléctionnez "ASDT" dans la liste des remotes
"Sites to
include in search" puis cliquez sur "finish". Faites "next" et "install
All" pour terminer l'installation.
Youpi, nous avons tout
téléchargé... il faut maitenant
configurer.
1-3
Configuration d'ASDT
ASDT nous offre une
nouvelle
"perspective", séléctionnez-la dans "Window
> Open
Perspective > Other..., ActionScript2". Les perspectives
définissent un environement de développement en
ajoutant ou
retirant certaines options, fenêtres, menus etc...
ASDT nous
propose donc des raccourcis spécifiques aux
projets
flash (clic droit dans "Navigator > New > New
ActionScript2
Project" ou directement dans la barre de menu (le petit repertoire avec
un "f" rouge)).
Avant de créer notre premier projet, nous allons configurer
ASDT.
Ce plugin permet -lorsqu'il est couplé avec MTASC- la
vérification à tout instant de la bonne
syntaxe de votre code. MTASC
étant beaucoup plus rapide que le compilateur de macromedia (qui a
dit Adobe ?),
ASDT
l'utilise pour vérifier votre syntaxe à
chaque
sauvegarde ! Grace à cette "feature" on gagne
énormément en temps de développement.
Vous devez sans doute connaître ce sentiment atroce de
crackage
total lors du "control + entrée" au sein de l'IDE Flash.
Vous
savez éperduement que vous vous êtes
planté dans le
nom d'une variable ou dans le nomage d'un clip mais vous vous coltinez
3 minutes de compilation de Flash
en essayant de cliquer sur ce foutu
bouton annuler qui ne marche jamais ! ben ça c'est fini...
Donc pour
paramétrer ASDT
allons
dans "Window > Preferences... > ActionScript2" et
commencons par
définir le "Compiler", séléctionnez
MTASC dans
la
liste déroulante et cochez "Check syntaxe on Save" et "Check
syntaxe when a AS file is opened". Dans la rubrique "MTASC"
définissez le chemin vers le compilateur
("/home/fs/flashos/mtasc/mtasc" par exemple...). Il faut ensuite
définir le "Core path". C'est le chemin du repertoire racine
des
Classes utlisées par le compilateur. Vous pouvez
définir
le chemin vers le repertoire "Classes" qui se trouve la où
vous
avez installé Flash.
Si vous n'avez pas Flash,
définissez le repertoire d'MTASC
("/home/fs/flashos/mtasc/"). Ce
repertoire contient les Classes nécessaires (MovieClip,
Button,
etc..). La Rubrique "Editor" n'a pas besoin d'explications.
Bon, fermons cette fenêtre de
préférences et
créons un nouveau "ActionScript2 project", nomons le
"HelloWorld". Lors de la création d'un nouveau projet ASDT
nous
crée un répertoire "src" (qui existe vraiment
dans le
"workspace/HelloWorld") et un repertoire virtuel "core" qui lui
n'existe pas vraiment. C'est un lien vers les Classes
définies
dans le "Core path". Malheureusement sous linux, ce repertoire virtuel
ne marche pas. ASDT
n'arrive pas à resoudre le chemin. Il
faut
donc le supprimer.
De toute façon, vous pouvez à n'importe quel
moment,
créer un repertoire virtuel vers vos Classes. La
vérification syntaxique d'ASDT ne marche pas
sous linux, il
fait
une erreur et c'est plutot relou... Si l'auteur d'ASDT me lit : qu'il
regarde !

Bref, on peut donc
à la
manière du répertoire "core", définir
des liens
vers des répertoires de Classes de cette façon.
Clic
droit sur le projet, "New > Other... > Simple, folder"
puis
"next". Entrez un nom pour le répertoire ("package" par
exemple)
puis, cliquez sur "Advanced>>". Eclipse vous propose
alors de
créer un lien vers un répertoire de votre disque.
Choisissez alors la
racine de votre répertoire de Classes. Dès lors,
vous
avez accès depuis votre projet à vos classes
"générales" (comme vous devez avoir
défini ce
chemin dans les paramètres actionscript de flash). Les
Classes
sont accessibles mais il faut définir ce nouveau chemin
à
ASDT (tout
comme dans flash).
Donc, faites un "clic droit > preferences" sur le projet
"HelloWorld",
et allez à la rubrique "AS2 Class Path". Tapez "package",
puis
"add". Désormais, MTASC
cherchera aussi dans ce
répertoire les Classes lors d'une compilation.
On va vérifier
qu'ASDT / MTASC
fonctionnent.
Créez donc une
nouvelle classe
dans "src", nomez la "Main" par exemple...
Essayez donc de taper :
class
Main{
razopiuemaklzne;:,nqsàé'()ç_ ;
}
et faites un control+s. Si
tout est bien
configuré, la fenêtre "Problems" doit vous dire un
truc du
genre "Parse error unexpected
razopiuemaklzne;:,nqsàé'()ç_ ;"
Si vous ne voyez pas d'erreur, vérifiez les configuration
d'MTASC.
testons maintenant;
class
Main{
private
var mc:MovieClip;
}
Si vous n'avez pas
d'erreur, c'est
très bien. Si la fenêtre "Problems" vous dit "type
error
class not found : MovieClip" c'est que vous avez un problème
avec votre "core path".
puis si vous avez un
répertoire
de package, testez un import d'une de vos classe:
import
com.flasheur.utils.Jambon;
class Main{
private
var jmb:Jambon;
}
Si vous avez une erreur
(avec une de vos Classes hein), c'est que vous avez un soucis avec une
des liaisons des
"répertoires virtuels" ou que vous n'avez pas
défini son
chemin dans le "AS2 Class Path" du projet.
Si tout est bon,
continuons...
2
- Hello World
On va quand même le faire, rien que pour l'histoire de l'informatique... c'est comme les dans les jeux vidéps type "rpg", ca commence toujours avec un héro qui se réveille.
Créons donc dans le projet "HelloWorld" une classe Hello (Hello.as) dans le répertoire "src". Et tapez ça dedans :
class
Hello{
static public var m:Hello;
public function Hello(){
_root.createTextField("out",0,0,150,40);
_root.out.text
= "Hello
World";
}
static public function main(){
var m =
new Hello();
}
}
On peut voir dans le
constructeur la
création d'un TextField que l'on rempli de la chaine "Hello
World".
Ce qui est important dans cette classe c'est la deuzième
méthode static.
Cette méthode "main"
est
le point d'entrée de notre logiciel. Il faut donc au moins
une
méthode "main" dans un projet flash sous peine de ne rien
exécuter. Dans cette fonction, on crée une
instance de
HelloWorld. L'instanciation exécute donc le constructeur de
la
classe, ce qui nous donnera donc, un champ texte. Enregistrez ce
fichier.
Nous allons compiler ce
fichier et en
faire un swf.
Créez un repertoire "swf" à la racine de votre
projet.
Il nous faut donc ouvrir un terminal et compiler la classe.
$
./mtasc -cp
~/flashos/workgroup/HelloWorld/src -header 320:240:25 -main -swf
~/flashos/workgroup/HelloWorld/src/hello.swf Hello.as
avec windows ça
ressemble
à ça
c:\>mtasc.exe
-cp
"c:/chemin vers
projet/src" -header 320:240:25 -main -out "c:/chemin vers
projet/swf/hello.swf"
Hello.as
Il faut penser à
mettre des
guillemets si les chemins contiennent des espaces.
"-cp" sert à
définir un
répertoire qui contient des Classes. On peut l'utiliser
plusieur
fois genre
$./mtasc
-cp "~/un package
par ci" -cp
"~/un package par la" Hello.as
-header défini
le "format" du swf
320x240 à 25 fps.
-main indique au compilateur de créer le "point
d'entrée"
du flash.
-out défini le fichier en sortie.
Attention, chez les
utilisateurs de
linux, ça ne marchera pas si vous n'avez pas les polices...
Logiquement avec tout
ça, on est
déjà capable de faire des sites etc...
Mais bon, c'est quand même pas très pratique. On
va voir
qu'on peut améliorer un petit peu ça. On peut
notament
créer une bibliothèque grace à swfMill.
2-1
Créons une
bibliothèque.
Nous pouvons
créer des semblants
de bibliothèques avec swfMill.
Les bibliothèques
se
définissent en XML. C'est très simple et
très
pratique.
Créez un répertoire "library" à la
racine du
projet ainsi qu'un fichier "library.xml" dans ce repertoire. A ce point
du tutorial votre projet doit ressembler à ça :

Sur le site de swfMill vous trouverez toute la syntaxe afin de créer des bibliothèques "avancées". Je vais juste expliquer ici comment insérer un jpg dans la bibliothèque. Copiez donc le jpg (logo.jpg) que vous voulez insérer dans la bibliothèque dans un nouveau repertoire "images" dans "library". Et éditez le library.xml comme suit
<?xml version="1.0" encoding="iso-8859-1" ?>
<movie width="320" height="240" framerate="25">
<background color="#ffffff"/>
<frame>
<library>
<clip id="idLogo" import="../workgroup/HelloWorld/library/images/logo.jpg"/>
</library>
</frame>
</movie>
on va utliser swfMill à la main pour créer un swf.
donc, placez vous dans le repertoire "swfmill" et tapez un truc du genre :Mais même si c'est possible, c'est pas des plus pratique. Et c'est là qu'as2ant entre en jeu !