MTASC+Eclipse : Installer et utiliser un environnement ActionScript libre et productif sous Linux
Par Magu(s) le lundi 30 mai 2005, 03h09 - Linux - Lien permanent - URL miniature
Depuis l'arrivée du compilateur d'Actionscript 2.0 open-source MTASC, il est possible de transformer directement des fichiers de script en swf ( qui est, lui, dans le libre depuis longtemps ) sans passer par le logiciel de feu Macromedia. Voilà qui ouvre des possibilités, notamment dans le développement d'applications multimedia sous linux de manière completement libre.
Pourtant, même pour les personnes habituées au "hardcore coding" il n'est pas toujours facile de passer de l'environnement familier de l'authoring de flash à de la compilation en ligne de commande.
De plus, il n'existait jusqu'à peu aucune plateforme de developpement actionscript sous linux. Dumoins jusqu'à ce que sorte un plugin actionscript pour Eclipse, la célèbre plateforme usine à gaz Java.
Comment donc se retrouver dans tout ce bazar ? Voici un petit guide qui vous facilitera la vie pour commencer la création d'application flash concurrentielles sous Linux.
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 
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 
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 
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... 
Commentaires
Bonjour,
excellent article...
Je comptais en faire un de mon côté, ben voilà !
Pour info, je suis inscris sur la liste de diffusion de asdt et apparemment bon nombre de nouveautés vont voir le jour, comme l'automatisation des getters et setters sous eclipse (comme en java) !!
Encore bravo pour ton article.
Alors ça y'est l'Magu(s), tu l'as pondu finalement
Excellentissime
J'utilise eclipse intensivement en java, et c'est une très bonne IDE, c'est chouette de savoir qu'on peut faire des trucs plus artistiques avec
L' Actionscript est bien plus que de l'artistique, c'est aussi un langage très puissant basé sur l'ECMAScript 4 qui permet des possibilités multimédia pour internet qu'aucun n'autre langage ne permet. L'arrivée fracassante d'un compilateur open-source est une nouvelle pleine d'espoir.
J'ai omis volontairement de parler de Flashout aussi dans ce billet, qui est un plugin pour Eclipse permettant de compiler et de visionner directement ses classes depuis l'authoring. Malheureusement, il se base sur le SAPlayer pour Windows et est donc uniquement utilisable avec l'OS de Microsoft...
D'ailleurs vivement qu'il modifie ce plug Flashout pour un affichage sous Linux, ça serait le top.
Pour ça il faudrait qu'il existe un standalone player pour linux ou que des gens se cassent la tête à incorporer le flash player à Eclipse
En attendant je suis content avec mon fichier .sh
Sinon je viens de rajouter dans le billet l'utilisation de l'option -separate qui permet de dépasser le limite des 32ko de classe par movieclip
C'est vrai que c'est pas bête ton système avec ton fichier .sh.
Mais pourquoi pas utiliser directement le navigateur par défaut en l'intégrant à eclipse, un peu comme php eclipse pour visualiser le swf
Excellent article !
"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."
UrukHai :
Oui c'est une idée mais ça pose toujours le problème du classpath. MTASC ne peut pas inclure à la fois son path 'std' vers ses classes natives et le path de tes propres classes. Tu dois toujours copier tes classes dans le repertoire de MTASC avant la compilation et en ça un .sh c'est pratique.
Par contre si ce petit problème se résout, c'est clair que c'est plus facile de prévisualiser directement de le browser
Je suis pas d'accord avec toi, tu peux créer des classpath pour asdt dans eclipse, et lorsque tu compile ta classe sous eclipse, asdt met automatiquement -cp "ton chemin vers ton packages de classes" dans les paramètres de MTASC. Il faut bien-sûr paramétrer comme il faut asdt dans les préférences de eclipse.
Tu n'es pas obligé de mettre toutes tes classes dans le dossier de MTASC, tu n'as qu'à reseigner tout simplement à MTASC le chemins de tes classes avec -cp puis le chemin des classes natives de MTASC ou bien de macromédia si tu les à, avec -cp aussi.
C'est pour çà que je te disai que c'était bête qu'il n'est pas utilisé un navigateur pour visualiser le swf compilé.
Si je me trompe, dis le moi
Ce que je disais, c'est que je ne sais pas si on peut utiliser 2x l'option -cp pour définir 2 classpaths. Parce que j'aimerai profiter à la fois de mes classes et de celles natives de MTASC ou MM. C'est uniquement pour cette raison que je copie mes classes dans le repertoire MTASC.
Maintenant si on sait et que les 2 paths sont pris en compte alors j'ai rien dit
Sinon c'est vrai que c'est plus malin d'utiliser le navigateur surtout qu'il y a des différences d'interpretations entre le plugin et le standalone ...
Je tombe à l'instant sur cet excellent billet : que dire de plus à part chapeau bas, messieurs
voila que je decouvre enfin une voie de conception flash sous mon OS préféré ... et servie par un excellent tuto
bravo
Hello les kubunteiros ou linuxiens,
juste un commentaire il existe un projet avec une bonne interface graphique idem macromedia flash qui n est pas mencioné dans cet article et je pense avec plus d avenir que F4l ou flash for linux quisemble arreter. Cela s´appelle Ktoon et c est développé par un cabinet de cartoonistes en colombie . ils ont besoin d un coup de main apparemment pour finaliser le truc mais en bonne voix.
aidez les http://ktoon.toonka.com/
excellent je ne suis peut etre juste pas d'accord avec le faite qu il faille rester AS2.0 il suffit a jouter les classes AS3 et c'est bon
en même temps y a 3 ans l'AS 3 n'existait pas.
et toc!
safw http://feed.informer.com/forums/pro... torontostar rpyv
erow http://hastaneyonetim.com/pikavipit pikavippi 20e lcvr