Mon premier SWF9 gratos avec Haxe

27.07.2007 13429 2

Installation :

Télécharger gratuitement l'install automatique depuis : http://haxe.org/download
Exécuter l'install. Une fois l'opération terminée, lancer haxesetup.exe depuis le dossier d'installation de Haxe (généralement %Program Files%\Motion-Twin\haxe).
Si l'installation s'est bien passée, haxe.exe, le compilateur, est accessible depuis n'importe où (depuis la ligne de commande notamment). Les classes de base sont dans le dossier std de Haxe. Elles sont composées d'une API pour chacune des plateformes (neko, javascript, SWF), et une API commune.

Utilisation :

Haxe s'utilise depuis la ligne de commande ou en créant un fichier de configuration HXML. C'est un simple fichier texte contenant les paramètres pour la compilation.

haxe.exe -swf monSWF.swf -main MaClasseMain -swf-version 9 -swf-lib maLibrairie.swf -cp cheminDesClasses

monSWF.swf est le SWF complet produit par Haxe. Ce paramètre spécifie également la plateforme ciblée.
MaClasseMain(.hx) est la classe principale (contenant une méthode static main qui est le point d'entrée du programme)
9 est le numéro de la version du SWF produit. Ce paramètre défini à 9, l'API flash9 va être utilisée et non la flash (dans le dossier std des classes de base de Haxe).
maLibrairie.swf est le SWF bibliothèque d'objets (pouvant provenir de SWFMill). Tous les objets vont être inclus dans le SWF final.
cheminDesClasses est le dossier de classes à inclure.

Exemple :

Le but est d'obtenir un SWF9 contenant un bouton personnalisé (états survolé, appuyé..).

Le SWF utilisé en tant que bibliothèque d'objets est obtenu avec SWFMill (cf Tuto : Ma première bibliothèque SWF gratos avec SWFMill)
Dans la bibliothèque d'objets il y a un movieclip contenant 3 frames. Sur chacune d'elles, un movieclip placé sur la scène.
Main.hx:

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
class ButtonId extends MovieClip
{
    var mcUpState    : Sprite;
    var mcOverState    : Sprite;
    var mcDownState    : Sprite;
    
    public function new ()
    {
        super();
        gotoAndStop( "up" );
        addEventListener( MouseEvent.ROLL_OVER, over );
        addEventListener( MouseEvent.ROLL_OUT, out );
        addEventListener( MouseEvent.MOUSE_DOWN, down );
        addEventListener( MouseEvent.MOUSE_UP, over );
    }
    
    function over ( e : MouseEvent )
    {
        gotoAndStop( "over" );
    }
    
    function out ( e : MouseEvent )
    {
        gotoAndStop( "up" );
    }
    
    function down ( e : MouseEvent )
    {
        gotoAndStop( "down" );
    }
}
class Main
{
    static function main()
    {
        var mcButton = new ButtonId();
        flash.Lib.current.addChild( mcButton );
    }
}

La compilation en ligne de commande :

haxe -swf Main.swf -swf-version 9 -main Main -cp src -swf-lib library/library.swf -swf-header 100:50:40:FFFFFF

Main.swf est le nom du SWF9 final
9 est la version du SWF
Main est la classe contenant la fonction static main (point de depart du programme)
src est le chemin des classes utilisées
library/library.swf est le SWF bibliothèque d'objets
100:50:40:FFFFFF est la largeur, hauteur, cadence et couleur du SWF de sortie
Contrairement à Flex, lors de l'utilisation avec SWFMill (ou avec une quelconque bibliothèque d'objets extérieure), il est possible de grouper ces 2 classes dans un même fichier.
Le nom de liaison de l'objet inclus dans la bibliothèque, doit commencer par une lettre majuscule. En effet Haxe accepte uniquement des noms de classes commençant par une majuscule. Or,à l'exécution, le nom de liaison de l'objet est automatiquement associé à la classe du nom de l'objet (rq: en Flex, on peut associer un objet à une classe de nom différent), source d'erreur à l'exécution.
Pour éviter une autre erreur à l’exécution, il faut déclarer les moviclips placés sur la scène, sur les 3 frames, en tant que variables, movieclips, de la classe associée à l'objet (ici le nom de liaison ButtonId)
Télécharger l'exemple

Commentaires

20.08.2007 à 19:13 neoziro

Salut, ça m'a bien aidé tous vos tutos (très bien fait d'ailleur), je commence Haxe (un jeu pour débuter) je galère un peu. J'aimerai bien discuter avec vous, car sur certains points des choses me semblent étranges. Ne pouvant pas trop en parler aux gars Motion-Twin débordés, si vous avez msn, contactez moi.

24.03.2009 à 00:35 serialdebian

Tuto très bien expliqué, vraiment merci
Par contre le soucis que j'ai est : en pratique, toutes les images se superposent. Donc comment faire avec la transparence d'images ? (on voit celles d'en dessous...)

Laisser un commentaire

http://
×