Ma première bibliothèque SWF gratos avec SWFMill

04.08.2007 10713 6

Installation:

Télécharger gratuitement SWFMill depuis http://swfmill.org
Le dézipper. L'exécutable swfmill.exe sera directement utilisé en ligne de commande (SWFMill ne nécessite aucune installation particulière).

Utilisation:

Pour construire facilement une bibliothèque, on utilise SWFmill avec le paramètre simple comme suit:

%chemin vers swmill%\swfmill.exe simple monXml.xml maBibliotheque.swf

monXml.xml est le XML de description utilisant le dialecte simple de SWFMill. (Le XML d'exemple qui suit, utilise le dialecte simple)
maBibliothèque.swf est une bibliothèque SWF pouvant être utilisée avec des applications utilisant la machine virtuelle 2 (AVM2) du flash player 9.

Exemple:

L'exemple qui suit montre comment faire un SWF contenant dans la bibliothèque, un movieclip avec un nom de liaison et contenant plusieurs frames.
Dans ce cas, il s'agit d'un movieclip qui sert de bouton. Les frames, qui sont nommées, représentent les états du bouton.
Les images suivantes sont stockées dans un dossier nommé assets:

  • up up.png
  • down down.png
  • over over.png
<movie width="320" height="240" framerate="12" version="7">
  <clip id="upStateId" import="assets/up.png"/>
  <clip id="downStateId" import="assets/down.png"/>
  <clip id="overStateId" import="assets/over.png"/>
  <frame>
    <library>
    <clip id="ButtonId">
        <frame name="up">
          <place id="upStateId" name="mcUpState" depth="1"/>
        </frame>
        <frame name="over">
          <place id="overStateId" name="mcOverState" depth="2"/>
        </frame>
        <frame name="down">
          <place id="downStateId" name="mcDownState" depth="3"/>
        </frame>
      </clip>
    </library>
  </frame>
</movie>

Dans la bibliothèque (balise library), il y a un movieclip (balise clip), dont le nom de liaison (ou la classe associée) est la valeur de l'attribut Id (ici ButtonId). Ce movieclip contient 3 frames nommées (attribut name de la balise frame). Sur chacune des frames, un movieclip est placé sur la scène(balise place), avec un nom d’occurrence (attribut name de la balise place). Le movieclip ButtonId est manipulable par le code.
Télécharger l'exemple

Remarques :

  • L'attribut version de la balise movie est obsolète dans cette utilisation. Une bibliothèque compilée en version 7 peut être utilisée avec/pour des applications SWF9.
  • Si on utilise des polices importées pour une application flash9, l'attribut version='9' est nécessaire.
  • L'attribut Id de la balise clip, à l'intérieur d'une balise library, représente le nom de liaison de l'objet mais également le nom de la classe associée,  notamment pour les SWF9. Pour éviter des erreurs à l'exécution, il faut déclarer les classes correspondantes aux objets importés.
  • La balise bitmap est l’équivalent de la balise clip. Elle prend un nom de liaison dans l'attribut id qui sert également de nom de la classe associée. Bitmap ne peut être placé directement sur la scène (balise place) et doit donc figurer à l’intérieur de la balise library.
  • Haxe n'acceptant pas de nom de classe commençant par une minuscule, il faut impérativement que le nom de liaison d'un clip commence par une lettre majuscule.
  • Pour éviter des erreurs à l'exécution, il faut déclarer en tant que variables de classe d'un movieclip importé, les éventuels objets placés sur la scène à l'aide de l'attribut name de la balise place (dans l'exemple, les movieclips placés à chaque frame).
  • SWFMill ne supporte pas l'import de SWF issus de l'IDE Adobe Flash CS3.

L'utilisation de SWFMill pour faire un SWF9 est possible, mais selon les cas, elle peut s'avérer plus délicate. L'exemple est assez complet (et est une utilisation courante), car il englobe les principales difficultés liées à l'instanciation d'assets venant d'un SWF produit à partir de SWFMill et destiné au flash player 9 (AVM2).
Les remarques de ce post viennent d'expériences personnelles (et multiples pour la plupart ). N'hésitez pas à laisser un commentaire pour compléter ce document.

Commentaires

27.07.2007 à 22:34 Matthieu

Salut Michel,
Très sympa ton tutoriel sur swfmill et les graphismes. Cela va mettre bien utile pour créer une série de template avec seulement des outils open source.
Sinon, je ne sais pas si tu es au courant mais swfmill gère aussi les dessins en vectoriel du format svg (équivalent vectoriel de flash).
Par contre, il faut utiliser la version disponible sur le répertoire SVN.
Continue tes tutos sur HAXE, ils sont intéressants.
Bye

25.10.2007 à 09:49 ademus

Le top serait de pouvoir utiliser un truc comme SWFMill mais côté serveur, pour permettre à un internaute d envoyer des polices qui seraient encapsulées automatiquement en ligne dans un swf

25.10.2007 à 12:01 Michal

Salut Ademus,
Rien ne t'empeche d'utiliser SWFMill coté serveur, un peu comme le procédé Open Laszlo.
Il suffit d'executer SWFMill coté server, tout simplement

12.04.2008 à 23:58 haxe+swfmill inside

merci pour ces titos .. ils m'ont permis de trouvrer mon chemin dans le swf libre ...

26.05.2008 à 23:17 Marco

Je suis pas sûr de comprendre la partie où tu parles de Adobe Flash CS3 et SWFMill.. Est-ce que c'est possible de créer des librairies dans SWFMill et les utiliser dans Flash CS3? (Avec l'IDE ou AS3, peu importe)

15.03.2009 à 13:48 Fil Razorback

Merci pour ce post, exactement ce que je cherchais.

Laisser un commentaire

http://
×