Forums Développement Multimédia

Aller au contenu

Compiler et exporter un swf depuis AS3 : quelles solutions ?

CODE Actionscript

23 réponses à ce sujet

#1 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 14 December 2010 - 10:00 AM

Bonjour à toutes et tous,

Et bien tout est à peu près dans le titre. L'utilisateur a devant lui une animation avec un clip vide, il y ajoute de la couleur, des formes, du texte, etc... et lorsqu'il est satisfait du résultat, il clique un bouton qui ouvre un browse et lui propose d'enregistrer son clip en swf sur son HDD.

Est-ce que c'est de la science-fiction ?
Ou bien c'est possible...et si oui, par quel moyen ?
Je ne veux évidemment pas que tout me tombe tout cuit dans le bec, mais des tutos, des pistes....
Merci d'avance pour vos lumières.

#2 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 14 December 2010 - 10:27 AM

alors des liens mais pas de tuto ... j'ai commencé un truc mais j'ai vraiment pas le temps de finir ( c'est souvent comme sa .. )

http://www.libspark....yossy/swfassist
https://github.com/claus/as3swf
http://eval.hurlant.com/

moi j'utilise uniquement swfassist et eval !

#3 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 14 December 2010 - 10:37 AM

Bonjour et merci.
Je vois que je n'ai pas précisé mon IDE. C'est flash.
Est ce que ces liens sont aussi valables ?

Citation

moi j'utilise uniquement swfassist et eval !

Est-ce que les 2 fonctionnent ensemble ? Je veux dire : est-ce qu'une de ces solutions fonctionne sans l'autre, ou elles se complètent ?

#4 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 14 December 2010 - 10:44 AM

l'ide ... c'est pas un problème ( quoi c'est un problème de coder dans flash y'a des outils pour codes et d'autre pour animer .. )

SwfAssist permet de jouer avec les éléments graphique, d'en créer et dans utiliser des déjà présent dans un swf , eval permet de rajouter du code ( des function ), donc oui sa ce complète ...


PS: c'est pas facile a prendre en mains.

#5 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 14 December 2010 - 11:27 AM

Ah bon ?
C'est tant que ça une usine à gaz que de générer un swf à la volée ?

:shock:

#6 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 13 June 2011 - 08:57 AM

Bonjour à tous,

Je suis toujours preneur, mais n'ai rien trouvé...
Y-a-t-il du nouveau ?

Merci de vos réponses.

#7 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 13 June 2011 - 09:10 AM

Voir le messagerenaud63, le 14 December 2010 - 10:00 AM, dit :

lui propose d'enregistrer son clip en swf sur son HDD.


En swf ? donc dans l'idée d'avoir une animation ? :shock: sans quoi un format jpg, png et associé devrait suffire non ?

vu que Flash ne sait pas écrire sur le disque (mais AIR oui ;) ça ne t'intéresserait pas ?) je passerais par php pour générer un fichier image et l'enregistrer où bon semblera. Ok php peut aussi générer du swf, mais là (je n'ai jamais fait que lire une démo qui m'a amusée) ça me semble confondre bazooka et lance pierre…

:)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#8 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 13 June 2011 - 09:19 AM

Bonjour Nataly,

Oui, l'idée est que l'utilisateur puisse créer son animation, et lorsque il est satisfait du résultat, l'exporter sur son HDD au format SWF. Un générateur d'animation en quelque sorte.
On peut passer par PHP pour créer un gif animé de plusieurs clips flash, après export en PNG ou JPG... mais c'est une belle usine à gaz...Et ça n'a jamais le rendu d'une animation avec les tween et tout le toutim.

Tu dis AIR ?
Je ne connais pas, je vais faire des recherches. Cela permettrait d'exporter un SWF depuis AS3 ? Et au niveau fonctionnement, c'est très différent de Flash ?

#9 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 13 June 2011 - 10:23 AM

ça permet de fabriquer des applis de bureau… :? avec la techno Flash

Citation

Un générateur d'animation en quelque sorte.

ummf pff… je vais suivre le sujet, par culture perso… mais vais rien pouvoir pour toi sur ce coup là :?

:(
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#10 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 13 June 2011 - 10:25 AM

Des applis de bureau ?
Tu veux dire comme des logiciels que le client peut installer ?
Est-ce que cela m'apporterait quelque chose pour ce que je veux faire ?
Je suis en train de lire la doc, mais hummm...je me dis que j'ai déjà pas mal galéré pour piper quelque chose à AS3, alors me lancer dans une nouvelle exploration...

#11 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 13 June 2011 - 10:27 AM

Voir le messagerenaud63, le 13 June 2011 - 10:25 AM, dit :

je me dis que j'ai déjà pas mal galéré pour piper quelque chose à AS3, alors me lancer dans une nouvelle exploration...

c'est de l'as3 pur jus avec seulement quelques classes sup, genre justement tout ce qui permet la manipulation (écriture etc) de fichiers sur le disque local…
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#12 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 13 June 2011 - 10:43 AM

Merci pour ces renseignements. Une dernière question : connais-tu l'adresse d'un tuto qui parlerait ce ce que je veux faire : exporter un swf ?
Je vais de mon côté regarder les tutos qui sont présents ici sur l'installation et la prise en main de AIR...

#13 matt-murdock

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 6852 messages

Posté 13 June 2011 - 12:00 PM

comme cela peut etre (sans garanti)

http://segfaultlabs....e-bitmap-in-air

#14 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 13 June 2011 - 14:52 PM

Merci ! ça a l'air de correspondre à ce que je cherche !
Cependant toute mon appli a été créée en AS3 avec flash CS4 et FlashDevelop.
Ce matin, j'ai installé AIR - et je n'ai pas vu de grands changements dans l'interface de Flash suite à cette installation - alors comment je peux intégrer un code AIR dans mon appli ? Est-ce que ce sera compatible ? J'avoue ne pas avoir bien compris l'utilité de AIR, ses applications, et ce que je pouvais en faire avec mon code AS3.
Peux-tu me renseigner ?

#15 Cpt_Cavern

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 250 messages

Posté 14 June 2011 - 14:01 PM

AIR n'est pas un code mais un moyen d'exporter tes projet sur une plateforme local (l'ordinateur de l'utilisateur). On peut ensuite l'installer comme un logiciel classique. Le langage de programmation reste l'AS3 et la plateforme de développement Flash ou autre IDE pouvant compiler des fichiers .AIR. Tu n'as donc pas a apprendre un nouveau langage mais tout au plus quelques classe qui permet d'interagir avec la machine hôte.

#16 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 14 June 2011 - 14:05 PM

Salut,

Citation

Et bien tout est à peu près dans le titre. L'utilisateur a devant lui une animation avec un clip vide, il y ajoute de la couleur, des formes, du texte, etc... et lorsqu'il est satisfait du résultat(...)
Ca ressemble aux "cartes de voeux" et autres faire-part. Tu es sûr que tu as vraiment besoin de générer un SWF ?

#17 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 14 June 2011 - 14:30 PM

Bonjour à vous,

Citation

AIR n'est pas un code mais un moyen d'exporter tes projet sur une plateforme local (l'ordinateur de l'utilisateur). On peut ensuite l'installer comme un logiciel classique. Le langage de programmation reste l'AS3 et la plateforme de développement Flash ou autre IDE pouvant compiler des fichiers .AIR. Tu n'as donc pas a apprendre un nouveau langage mais tout au plus quelques classe qui permet d'interagir avec la machine hôte.

Ok, c'est à dire leur permettre d'enregistrer un swf, donc...
Malgré tout, je n'ai rien à faire pour l'intégration ? Un paramètre dans FlashDevelop ?

Citation

Ca ressemble aux "cartes de voeux" et autres faire-part. Tu es sûr que tu as vraiment besoin de générer un SWF ?

Oui, tout à fait : je veux permettre aux users de se créer des petites animations type bannières et ensuite de les enregistrer.
Mais ça a l'air d'être une usine à gaz que d'exporter un swf depuis AS3. Bizarre quand même...

#18 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 14 June 2011 - 14:36 PM

Voir le messagerenaud63, le 14 June 2011 - 14:30 PM, dit :

Mais ça a l'air d'être une usine à gaz que d'exporter un swf depuis AS3. Bizarre quand même...
Ben, il faut compiler un SWF, donc avoir un compilateur AS3 en AS3 et générer le code à compiler (y compris le code des éléments graphiques), ça n'a vraiment rien de trivial. :)
Ceci dit, j'ai une connaissance qu'il l'a déjà fait, en utilisant le projet Tamarin je crois, et finalement il a abandonné cette solution suite à des soucis assez prévisibles de performances (mais ça marchait).

Ce qui me paraît le plus facile, c'est de générer des données à partir des actions de l'utilisateur, disons un XML, qui sera ensuite chargé et utilisé par un SWF que tu fournis et qui serait un "lecteur" pour ces données.
Je pense que vouloir générer un SWF est surtout ici un moyen de s'ajouter énormément de complexité. :)

#19 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 14 June 2011 - 14:57 PM

Ca veut dire que le user doit embarquer un swf "lecteur" et un xml "source" ?
Pas simple pour quelqu'un qui veut simplement se créer une petite bannière flash 468x60...

#20 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 14 June 2011 - 18:35 PM

un peu de code au cas ou ....
ce code te permet de récupérer une liste d'images sur le disque local , de les charger dans le swf, de générer un swf contenant une image par frame , puis de le visualiser et de le telecharger ...



package {
        import fl.controls.Button;

        import com.codeazur.as3swf.SWF;
        import com.codeazur.as3swf.data.SWFFillStyle;
        import com.codeazur.as3swf.data.SWFMatrix;
        import com.codeazur.as3swf.data.SWFRectangle;
        import com.codeazur.as3swf.data.SWFShapeRecordEnd;
        import com.codeazur.as3swf.data.SWFShapeRecordStraightEdge;
        import com.codeazur.as3swf.data.SWFShapeRecordStyleChange;
        import com.codeazur.as3swf.data.SWFShapeWithStyle;
        import com.codeazur.as3swf.data.consts.BitmapFormat;
        import com.codeazur.as3swf.tags.TagDefineBitsLossless;
        import com.codeazur.as3swf.tags.TagDefineShape;
        import com.codeazur.as3swf.tags.TagEnd;
        import com.codeazur.as3swf.tags.TagFileAttributes;
        import com.codeazur.as3swf.tags.TagPlaceObject2;
        import com.codeazur.as3swf.tags.TagRemoveObject2;
        import com.codeazur.as3swf.tags.TagSetBackgroundColor;
        import com.codeazur.as3swf.tags.TagShowFrame;

        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.geom.Rectangle;
        import flash.net.FileReference;
        import flash.net.FileReferenceList;
        import flash.utils.ByteArray;

        public class Main extends Sprite {
                const w : Number = 320;
                const h : Number = 240;
                const wt : Number = w * 20;
                const ht : Number = h * 20;
                public var bt_files : Button;
                public var bt_save : Button;
                private var _fileReferenceList : FileReferenceList;
                private var _files : Vector.<BitmapData>;
                private var _loader : Loader;
                private var  _fileReference : FileReference;
                private var ba : ByteArray;

                public function Main() {
                        trace(this);
                        if (stage) handleAddedToStage();
                        else addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
                }

                private function handleAddedToStage(event : Event = null) : void {
                        trace(this, 'handleAddedToStage', event);
                        if (event) removeEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);

                        bt_save.enabled = false;
                        bt_files.addEventListener(MouseEvent.CLICK, handleFilesButtonClick);
                }

                private function handleFilesButtonClick(event : MouseEvent) : void {
                        trace(this, 'handleFilesButtonClick', event);
                        bt_files.removeEventListener(MouseEvent.CLICK, handleFilesButtonClick);
                        bt_files.enabled = false;
                        _fileReferenceList = _fileReferenceList == null ? new FileReferenceList() : _fileReferenceList;
                        _fileReferenceList.addEventListener(Event.SELECT, handleFileReferenceListSelect);
                        _fileReferenceList.addEventListener(Event.CANCEL, handleFileReferenceListCancel);
                        _fileReferenceList.browse();
                }

                private function handleFileReferenceListCancel(event : Event) : void {
                        trace(this, 'handleFileReferenceListCancel', event);
                        _fileReferenceList.removeEventListener(Event.SELECT, handleFileReferenceListSelect);
                        _fileReferenceList.removeEventListener(Event.CANCEL, handleFileReferenceListCancel);
                        bt_files.enabled = true;
                        bt_files.addEventListener(MouseEvent.CLICK, handleFilesButtonClick);
                }

                private function handleFileReferenceListSelect(event : Event) : void {
                        trace(this, 'handleFileReferenceListSelect', event);
                        _fileReferenceList.removeEventListener(Event.SELECT, handleFileReferenceListSelect);
                        _fileReferenceList.removeEventListener(Event.CANCEL, handleFileReferenceListCancel);
                        _files = new Vector.<BitmapData>();
                        loadFiles();
                }

                private function loadFiles() : void {
                        trace(this, 'loadFiles');
                        if (_files.length == _fileReferenceList.fileList.length) {
                                _loader = null;
                                buildSwf();
                        } else {
                                trace(this, 'loadFile', (_fileReferenceList.fileList[_files.length] as FileReference).name);
                                (_fileReferenceList.fileList[_files.length] as FileReference).addEventListener(Event.COMPLETE, handleFileReferenceListFileComplete);
                                (_fileReferenceList.fileList[_files.length] as FileReference).load();
                        }
                }

                private function handleFileReferenceListFileComplete(event : Event) : void {
                        trace(this, 'handleFileReferenceListFileComplete', event);
                        _loader = _loader == null ? new Loader() : _loader;
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaderComplete);
                        _loader.loadBytes((event.currentTarget as FileReference).data);
                }

                private function handleLoaderComplete(event : Event) : void {
                        trace(this, 'handleLoaderComplete', event);
                        _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, handleLoaderComplete);
                        _files.push((_loader.contentLoaderInfo.content as Bitmap).bitmapData.clone());
                        _loader.contentLoaderInfo.addEventListener(Event.UNLOAD, handleLoaderUnload);
                        _loader.unload();
                }

                private function handleLoaderUnload(event : Event) : void {
                        trace(this, 'handleLoaderUnload', event);
                        _loader.contentLoaderInfo.removeEventListener(Event.UNLOAD, handleLoaderUnload);
                        loadFiles();
                }

                private function buildSwf() : void {
                        trace(this, 'buildSwf');

                        var frames : int = 0;
                        var swf : SWF = new SWF();

                        swf.frameSize.xmax = 320 * 20;
                        swf.frameSize.ymax = 240 * 20;
                        swf.compressed = true;
                        swf.version = 6;
                        swf.frameRate = 1;
                        swf.tags.push(new TagFileAttributes());
                        swf.tags.push(new TagSetBackgroundColor());

                        for (var i : int = 0;i < _files.length;i++) {
                                frames++;
                                var bitmapId : uint = frames << 1;
                                var shapeId : uint = bitmapId + 1;

                                var bitsLossless : TagDefineBitsLossless = new TagDefineBitsLossless();
                                bitsLossless.characterId = bitmapId;
                                bitsLossless.bitmapFormat = BitmapFormat.BIT_24;
                                bitsLossless.bitmapWidth = w;
                                bitsLossless.bitmapHeight = h;
                                bitsLossless.zlibBitmapData.writeBytes(_files[i].getPixels(new Rectangle(0, 0, w, h)));
                                bitsLossless.zlibBitmapData.compress();
                                swf.tags.push(bitsLossless);

                                var shape : TagDefineShape = new TagDefineShape();
                                shape.characterId = shapeId;
                                shape.shapeBounds = new SWFRectangle();
                                shape.shapeBounds.xmin = 0;
                                shape.shapeBounds.ymin = 0;
                                shape.shapeBounds.xmax = wt;
                                shape.shapeBounds.ymax = ht;
                                shape.shapes = new SWFShapeWithStyle();

                                var fillStyle : SWFFillStyle = new SWFFillStyle();
                                fillStyle.type = 0x42;
                                fillStyle.bitmapId = bitmapId;
                                fillStyle.bitmapMatrix = new SWFMatrix();
                                fillStyle.bitmapMatrix.scaleX = 20;
                                fillStyle.bitmapMatrix.scaleY = 20;
                                shape.shapes.initialFillStyles.push(fillStyle);

                                var styleChange : SWFShapeRecordStyleChange = new SWFShapeRecordStyleChange();
                                styleChange.stateFillStyle1 = true;
                                styleChange.fillStyle1 = 1;
                                shape.shapes.records.push(styleChange);

                                var edge : SWFShapeRecordStraightEdge = new SWFShapeRecordStraightEdge();
                                edge.generalLineFlag = false;
                                edge.vertLineFlag = false;
                                edge.deltaX = wt;
                                edge.deltaY = 0;
                                shape.shapes.records.push(edge);

                                edge = new SWFShapeRecordStraightEdge();
                                edge.generalLineFlag = false;
                                edge.vertLineFlag = true;
                                edge.deltaX = 0;
                                edge.deltaY = ht;
                                shape.shapes.records.push(edge);

                                edge = new SWFShapeRecordStraightEdge();
                                edge.generalLineFlag = false;
                                edge.vertLineFlag = false;
                                edge.deltaX = -wt;
                                edge.deltaY = 0;
                                shape.shapes.records.push(edge);

                                edge = new SWFShapeRecordStraightEdge();
                                edge.generalLineFlag = false;
                                edge.vertLineFlag = true;
                                edge.deltaX = 0;
                                edge.deltaY = -ht;
                                shape.shapes.records.push(edge);
                                shape.shapes.records.push(new SWFShapeRecordEnd());
                                swf.tags.push(shape);

                                var removeObject : TagRemoveObject2 = new TagRemoveObject2();
                                removeObject.depth = 1;
                                swf.tags.push(removeObject);

                                var placeObject : TagPlaceObject2 = new TagPlaceObject2();
                                placeObject.depth = 1;
                                placeObject.characterId = shapeId;
                                placeObject.hasCharacter = true;
                                placeObject.hasColorTransform = false;
                                swf.tags.push(placeObject);
                                swf.tags.push(new TagShowFrame());
                        }

                        swf.tags.push(new TagEnd());
                        swf.frameCount = frames;

                        ba = new ByteArray();
                        swf.publish(ba);

                        _loader = _loader == null ? new Loader() : _loader;
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleSwfLoaderComplete)
                        _loader.loadBytes(ba);

                        bt_save.enabled = true;
                        bt_save.addEventListener(MouseEvent.CLICK, handleSaveButtonClick);
                }

                private function handleSwfLoaderComplete(event : Event) : void {
                        trace(this, 'handleSwfLoaderComplete', event);
                        trace(_loader.content.width, _loader.content.height);
                        addChild(_loader);
                }

                private function handleSaveButtonClick(event : MouseEvent) : void {
                        trace(this, 'handleSaveButtonClick', event);
                        bt_save.removeEventListener(MouseEvent.CLICK, handleSaveButtonClick);
                        bt_save.enabled = false;
                        _fileReference = _fileReference == null ? new FileReference() : _fileReference;
                        _fileReference.save(ba, 'export.swf');
                }
        }
}
 

Fichier(s) joint(s)

  • Fichier joint  builder.zip   1.05 Mo   22 téléchargement(s)


#21 renaud63

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 289 messages

Posté 15 June 2011 - 06:49 AM

Bonjour et merci !!!
Je vais tester cela, et reviens ici pour en parler.
Bonne journée.
:lol:

#22 didhoc

    Ceinture Blanche

  • Members
  • Pip
  • 6 messages

Posté 08 July 2011 - 15:35 PM

Bonjour, je planche sur même problème que renaud63 mais je n'ai pas encore de solution satisfaisante.
En gros, à partir d'un EXE Flash ou d'un SWF où l'utilisateur construit une animation, je n'arrive (+ou- d'ailleurs :? ) qu'à exporter un GIF animé (grâce à GIFEncoder http://www.bytearray.org/?p=93) ou un SWF avec une séquence d'images fixes grâce au code de goabonga (merci !), ne pouvant effectivement pas compiler un SWF à partir d'un SWF.

Je me demandais si je pouvais utiliser un compilateur on-line du genre http://hossy.net/sssc.php pour arriver à ce que je veux (dans ce cas mon projet serait en ligne, SWF + PHP)
Dans l'exemple donné on injecte directement de l'AS (il me faudrait de l'AS3). C'est ça le principe, c'est de l'ActionScript brut qu'on passe au compilateur?
Dans ce cas comment ça se passe quand utilise plusieurs classes ?
Cela reste une solution pour des choses assez simples seulement non ?
Merci.

Modifié par didhoc, 08 July 2011 - 15:38 PM.


#23 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 08 July 2011 - 17:42 PM

J'ai pas tout compris:)
mais tu peux installé le flexSdk sur ton serveur si il le permet et du coup appeler ce dernier via php ...

Dans le meme style que ton lien il existe la lib Eval ( eval.hurlant.com ).

Toutefois il faut bien analyser les besoins du projet est ce que l'export doit contenir du code écrit par l'utilisateur ?
....


@+

#24 didhoc

    Ceinture Blanche

  • Members
  • Pip
  • 6 messages

Posté 08 July 2011 - 23:47 PM

Voir le messagegoabonga, le 08 July 2011 - 17:42 PM, dit :

J'ai pas tout compris:)
Bon, maintenant ça devrait être plus clair, j'ai entre-temps levé certains doutes que j'avais dans mon post précédent. ;-)

En reprenant le cas de renaud63, imaginons un SWF qui permette de configurer un banner. L'utilisateur choisit une image de fond, écrit le texte pour chaque image clé et les transitions entre les images clés.
L'objectif est qu'il puisse "exporter" un SWF du banner tel qu'il l'aura défini.

Si j'ai bien compris, il faut passer par un compilateur et donc il faut que mon SWF (via PHP) puisse générer et envoyer un fichier .as (avec toutes les variables actualisées en fonction des choix de l'utilisateur) au compilateur. C'est ça ?

Il y a un moyen de faire la même chose en local à partir d'un EXE Flash ?

Voir le messagegoabonga, le 08 July 2011 - 17:42 PM, dit :

Toutefois il faut bien analyser les besoins du projet est ce que l'export doit contenir du code écrit par l'utilisateur ?
Du code écrit par l'utilisateur, non. Mais des paramètres (couleur de fond, positions des éléments etc.) qu'il aura défini.
Merci de bien vouloir éclairer ma lanterne.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)