Tous ces manipulations ont été réalisées sous Ubuntu Hoary

Motion Twin Actionscript Compiler

La première étape à la création de son environnement Actionscript sous Linux est evidemment l'installation du compilateur.

  • Procurez vous les sources précompilées pour linux sur le site de Motion-Twin. La version pour Linux à l'heure ou j'écris ces lignes est la 1.0.6, le plus simple est de faire un wget dans le dossier /tmp

# wget http://www.mtasc.org/zip/mtasc-1.06-linux.tgz

  • Copiez l'archive dans son repertoire d'installation et décompressez-la. Pour ma part et par propreté, je l'ai mise dans /opt/mtasc.

# mkdir /opt/mtasc
# cp /tmp/mtasc-1.06-linux.tgz /opt/mtasc
# tar xvzf /opt/mtasc/mtasc-1.06-linux.tgz
# rm mtasc-1.06-linux.tgz

  • MTASC est maintenant installé sur votre machine, il ne reste plus qu'à faire un lien symbolique pour pouvoir l'utiliser dans le shell.

# ln -s /opt/mtasc/mtasc /bin/mtasc

  • Tapez "mtasc" dans votre shell pour voir si tout est bien en ordre, vous devriez avoir une sortie comme celle-ci :

Motion-Twin ActionScript2 Compiler 1.06 - (c)2004-2005 Motion-Twin
Usage : mtasc.exe [options] <files...>
Options :
-pack <path> : compile all files in target package
-cp <paths> : add classpath
-v : turn on verbose mode
-strict : turn on strict mode
-msvc : use MSVC style errors
-mx : use precompiled mx package
-swf <file> : swf file to update
-keep : does not remove AS2 classes from input SWF
-frame <frame> : export into target frame (must exist in the swf)
-main : enable main entry point
-header <header> : specify header format 'width:height:fps'
-separate : separate classes into different clips
-exclude <file> : exclude classes listed in file
-flash6 : generate Flash6 bytecode
-trace <function> : specify a TRACE function
-help Display this list of options
--help Display this list of options

A partir de là vous pouvez déjà écrire vos classes AS 2.0 et les compiler mais c'est un peu austère. Nous allons aller un peu plus loin puis nous reviendront à MTASC

Eclipse, ami ou ennemi ?

Tous ceux qui ont déjà fait un peu de java connaissent Eclipse, la plateforme de développement open-source pour le langage de Sun Macrosystem. Cet IDE est assez gros et contraignant à utiliser, pourtant couplé à son plugin Actionscript il peut se rélever très utile en attendant un SEPY pour Linux.

L'installation d'Ecplise suppose que vous avez déjà java sur votre machine, dans le cas contraire consultez les nombreux sites qui expliquent comment installer le JDK sur votre Linux -> pour Ubuntu

Installer Eclipse

  • La première chose à faire comme toujours est d'aller se procurer les sources sur le miroir le plus proche. Vous en trouverez la liste ici. Choisissez le dernier SDK pour Linux.
  • Dézippper le fichier dans son repertoire d'installation, /opt encore une fois.

# unzip eclipse-SDK-3.0.2-linux-gtk.zip -d /opt

  • Changez les droits pour démarrez Eclipse en root (ça vous permettra "normalement" de sauvez vos classes partout, et notamment dans le dossier mtasc au besoin).

# chown -R root:root /opt/eclipse/

  • Rendre l'application utilisable depuis le shell est ici un peu plus compliqué. Vous devez créer un fichier eclipse dans le repertoire /usr/bin/ avec votre éditeur de texte préféré (exemple gedit ou VI)

# vi /usr/bin/eclipse

Pressez i pour passer en mode insertion et coller les lignes suivantes :

#!/bin/sh
export MOZILLA_FIVE_HOME="/usr/lib/mozilla/"
export ECLIPSE_HOME="/opt/eclipse"
$ECLIPSE_HOME/eclipse $*

Esc pour revenir en mode commande, :w pour enregistrer puis :q pour quitter.

  • Si vous êtes sous Gnome, vous pourriez aimer avoir une icone de lancement dans le menu démarrer. Pour ça, créez un fichier eclipse.desktop dans le repertoire /usr/share/applications avec vi ou autre et copiez-y le texte suivant :

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse Platform
Comment=Eclipse IDE
Exec=eclipse
Icon=/opt/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;
StartupNotify=true

Installer ASDT

L'ActionScript Development Tool est un plugin Actionscript pour Eclipse qui mine de rien est assez puissant. Il vous permet de créer des projets actionscript, colorise la syntaxe, mais browse aussi vos classes personnelles pour l'auto-completion des objets et méthodes et rien que ça c'est déjà chouette :-)

  • Vous trouverez ce plugin sur sourceforge. Téléchargez la source zip dans votre dossier /tmp puis dézippez le contenu dans le repertoire plugin d'Eclipse.

# unzip asplugin.zip -d /opt/eclipse/

Vous voilà fin prêt à utiliser Eclipse pour faire de l'Actionscript.
Lancez l'application et paramètrez un dossier de travail au démarrage, par exemple dans /home/pseudo/actionscript/

Eclipse+ASDT :

Passons aux choses sérieuses

Voilà ici nous avons installé le compilateur Actionscript et l'environnement pour le développement d'applications Flash. Nous allons donc pouvoir commencer les tests et essayer d'écrire une première classe.

Faites clic-droit dans la fenêtre du navigateur et choisssez new>project>actionscript 2.0 project. Nommez le TestClass par exemple. Choisissez d'y créer un nouveau fichier que nous allons appeler Test.as par exemple.

Avec MTASC, le code actionscript doit être en pur AS 2.0 et le compilateur se basera sur la méthode statique main pour compiler la classe. Exactement comme en java en fait, si vous êtes un peu habitué à la poo, cela devrait vous sembler des plus logiques.

Pourquoi un ciblage sur le _root ? On nous rabache les oreilles depuis des lustres sur l'ignominie d'un ciblage sur le _root ! Ici nous n'avons pas trop le choix. MTASC étant en dehors de tout IDE Flash, _root est le seul moyen de cibler explicitement sur la scène de l'animation, c'est un mal dont il faudra donc s'accomoder.

Vous remarquerez en allant dans votre repertoire /home/pseudo/actionscript/TestClass/ qu'il y existe un fichier Test.as. Dès lors vous pouvez compiler votre première classe dans le shell.

mtasc -swf Test.swf -main -header 800:600:25 -cp /opt/mtasc/std Test.as

Explications :
  • -swf indique le nom du fichier output
  • -main indique quelle méthode compiler ( la méthode main en l'occurence qui est bien statique )
  • -header spécifie longueur:largeur:framerate
  • -cp indique le classpath des classes natives de Flash se trouvant dans le dossier std de MTASC
  • ensuite le fichier à compiler

Taper firefox Test.swf et vous verrez un superbe et jouissif "Hello World" dans votre navigateur

Automatisez la compilation de vos projets Eclipse/MTASC

Ca fonctionne, très bien. Mais vous avouerez que c'est un brin fastidieux de retaper à chaque fois les mêmes lignes dans le shell à chaque compilation. Même si on utilise la fonction de rappel de commande, on aimerait peut-être bien sauver son ancien swf ou lancer la prévisualisation de firefox directement.

Qu'a cela ne tienne, nous allons créer un fichier shell qui exécutera directement tout ce que nous voulons.

Avec vi ou gedit, créez un fichier compile.sh à la racine de votre projet (/home/pseudo/actionscript/TestClass par exemple ) et écrivez-y :

#!/bin/sh
# Ma classe de Test
cp -f Test.swf Test.bak.swf
mtasc -swf Test.swf -main -header 800:600:25 -cp /opt/mtasc/std Test.as
firefox Test.swf

cp -f force la sauvegarde même si le fichier existe.

Lorsque vous voudrez compiler, lancer juste la commande ./compile.sh et tout ce qui est contenu dans le fichier shell s'exécutera, sauvant, compilant et affichant d'un coup d'un seul. C'est déjà plus facile :note:

Définir ses propres packages

Dans tout bon projet poo, l'idéal est de définir ses propres packages. Pour ceux qui l'ignore encore, les packages sont des dossiers où l'on range ses classes pour pouvoir s'y retrouver. C'est une habitude qui vient de C++ et de Java. La convention veut que les packages portent le nom de domaine, d'où vient la classe, inversé. Les noms des packages commencent tous par des minuscules et les noms des classes commencent par une majuscule.

Nous allons creer un package be.opinionz.premierpaquet

Maintenant que vous êtes rodés à la poo nous allons écrire une classe dans notre package destinée à être appelée dans la classe Test


Comme vous le voyez, la classe ClassAImporter est appelée dans la classe Test, ici un problème va se poser puisque ce paquet ne se trouve pas dans le classpath défini par MTASC mais dans votre projet (/home/pseudo/actionscript/TestClass). Nous ne pouvons pas déclarer 2 chemins de classe au compilateur... Qu'à cela ne tienne, nous allons les y copier !

Nous réouvrons notre fichier compile.sh et ajoutons la ligne qui va copier nos classes

#!/bin/sh
# Ma classe de Test
cp -rf be/ /opt/mtasc/std/
cp -f Test.swf Test.bak.swf
mtasc -swf Test.swf -main -header 800:600:25 -cp /opt/mtasc/std Test.as
firefox Test.swf

cp -rf force récursivement pour être bien sûr d'avoir tous les packages.

Avec cela plus aucun problème, vous pouvez désormais travailler sereinement en actionscript sous linux et compiler des projets en AS 2.0 comme vous le feriez avec java.

32ko class size exceeded

Parfois il peut arriver que les classes soit trop grosses et dépassent la limite de 32ko autorisée par movieclip dans un swf
Il est utile alors d'ajouter l'option -separate lors de la compilation, ce qui écrit le code sur plusieurs clips brisant ainsi la fameuse limite.
Cela aura pour effet d'alourdir légerement l'animation mais le poids restera quand même raisonnable.

#!/bin/sh
# Ma classe de Test
cp -rf be/ /opt/mtasc/std/
cp -f Test.swf Test.bak.swf
mtasc -swf Test.swf -main -separate -header 800:600:25 -cp /opt/mtasc/std Test.as
firefox Test.swf

Vous voilà de plein pied dans du developpement Flash Open-Source productif sous Linux :note:

Et le graphisme dans tout ça ?

Oui effectivement, jusqu'ici il faut quand même être un peu codeur pour se débrouiller à faire du Flash sous Linux. Toutes les possibilités sont là pour utiliser le potentiel multimedia de l'actionscript mais à moins de se servir de l'API de dessin ( encore du code ), il est difficile de faire des trucs graphiques et c'est assez logique puisque le Flash Open-Source en est encore à ses balbutiements.

Pourtant il existe des solutions pas si bêtes que ça !

La face cachée d'Open-office

Si vous avez une distribution linux, vous avez forcement open-office pour votre traitement de texte.

Avez-vous déjà remarqué qu'Open-Office possède un petit logiciel de dessin intégré qui s'appelle Open-Office Drawing ? Et bien figurez-vous que cette petite merveille peut sauver vos réalisations vectorielles ou bitmap au format SWF. Il ne vous reste plus qu'à les charger via un loadMovie dans vos classes AS 2.0.

Vous trouvez les outils de OoO Drawing limités ? Et bien utilisez des logiciels dédiés au dessin vectoriel comme InkScape ou Sodipodi, importez en SVG dans OoO et sauvez un swf, c'est aussi simple que ça.

Les graphistes n'ont plus d'excuses !

Les librairies graphiques

Pour les codeurs les plus durs qui ne jurent que par les lignes de code, il existe des projets prometteurs de librairies graphiques en actionscript qui peuvent s'utiliser à la manière de java.awt

Les plus interessantes sont :

EnFlash :

EnFlash est une série de composants graphiques ( interfaces, box, formulaires ) en pur actionscript 2.0 qui tirent parti de la puissance de l'XML pour la mise en page et du CSS pour la mise en forme. La panacée quoi !

Malheureusement, la documentation est pour l'instant inéxistante et il peut s'averer très fastidieux d'ouvrir 10 fichiers de classe pour savoir comment tel écouteur se place sur tel objet. Par expérience je peux vous dire que c'est décourageant.

Il y a aussi parfois quelques problèmes de compilation, notamment avec des classes statiques que ne semble pas exister dans MTASC.

Cela devrait sans doute être résolu très prochainement

ActionStep

Actionstep est un projet très ambitieux puisque ce n'est ni plus ni moins qu'un portage des librairies OpenStep et GnuStep en Actionscript.

Ces librairies très connues des développeurs sont à l'origine de beaucoup d'interfaces graphiques open-source mais sont surtout celles qu'utilise Apple pour dessiner les interfaces graphiques de ses MacOs. Autant dire que le potentiel de ce projet est très très haut.

Malheureusement, lancé en février, le projet n'a pas encore de date de sortie officielle.

Le bon vieux bitmap

Au delà de tout ça, rien ne vous empêche de faire vos designs en jpg non-progressif dans The Gimp par exemple et de charger vos images dans un loadMovie.

La combinaison des 3 méthodes reste évidemment l'idéal :note:

Le futur

Le futur du Flash Open-Source, et je suis sûr qu'on va y arriver, sera un logiciel qui réunira toutes ces possibilités en un seul IDE cohérent pouvant rivaliser de façon net avec les futurs produits commerciaux d'Adobe. Il fournira les outils de dessin nécéssaires et se basera sur MTASC pour la compilation de l'actionscript.

En fait, un projet mort né pourrait même resurgir de sa tombe. Il s'agit de F4L ( Flash For Linux), un logiciel crée par un étudiant américain il y a quelques années pour rivaliser avec la version MX de Flash. Abandonné peu de temps après par manque de temps, le projet avait été repris par un groupe de barbus qui l'avaient fait évolué sans conviction vers un logiciel de dessin et d'animation vectorielles exportant au format swf. Ce soft n'avait que peu d'avenir sans un langage sérieux apportant la touche multimédia manquante et MTASC pourrait bien remedier à cela.

Je vous conseille d'à aller jeter un oeil à ce projet, et même à encourager les developpeurs à l'intergration de MTASC à leur TODO List.

Pour le reste, wait and see... mais le futur est plein d'espoir... :note: