Forums Développement Multimédia

Aller au contenu

Est-ce possible de générer des SWF à la volée

CODE Actionscript

20 réponses à ce sujet

#1 chezludo.r

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 29 September 2010 - 18:23 PM

Bonjour à tous,

J'aimerais savoir s'il existe une méthode pour générer des SWF à la volée. Exemple, j'ai une appli online qui me permet de créer des animations (MovieClip qui se déplace de a vers b, transition alpha,etc....)
L'idée serait d'enregistrer l'animation créée et l'exporter en swf.

Merci par avance.

#2 Monz

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 3541 messages

Posté 30 September 2010 - 08:03 AM

Voir le messageLalute, le 29 September 2010 - 18:23 PM, dit :

Bonjour à tous,

J'aimerais savoir s'il existe une méthode pour générer des SWF à la volée. Exemple, j'ai une appli online qui me permet de créer des animations (MovieClip qui se déplace de a vers b, transition alpha,etc....)
L'idée serait d'enregistrer l'animation créée et l'exporter en swf.

Merci par avance.
Bonjour,

Je ne crois pas que cela soit possible. Pas en .swf en tout cas.

Tu peux par contre sauvegarder les infos de ton anim dans une BDD ou dans un xml et donc charger en ligne une anim créée en ligne...

#3 sl4d3

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 471 messages

Posté 30 September 2010 - 08:48 AM

Ca devrait être possible cfr ->

http://wonderfl.net/c/dF0u

Comment ils font la dessus ? On peut modifier le code et regenerer le swf... ?

#4 sl4d3

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 471 messages

Posté 30 September 2010 - 09:01 AM

Voir le messageSl4d3, le 30 September 2010 - 08:48 AM, dit :

Ca devrait être possible cfr ->

http://wonderfl.net/c/dF0u

Comment ils font la dessus ? On peut modifier le code et regenerer le swf... ?

PS: Oups erreur de ma part, on peut rien modifier sur celui-la, mais il y'a quelques mois j'étais tombé sur unsite ou l'on pouvait modifier le code et recompiler le swf pour voir le resultat. Cependant j'ai un peu de mal a retomber sur le lien ! Je le cherche et je reviens ici si je trouves :)

#5 on-event

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 53 messages

Posté 30 September 2010 - 11:21 AM

heu wonderFl fonctionne :) click sur Fork en bas de page connecte toi modifie le code et lance la compilation :)


Pour ce qui est de générer du swf a la volé, si tu peux installer le sdk sur ton serveur tu pourra compiler a partir de ce dernier.
la deuxième solution c'est d’écrire un SWF a base de bytes ... regarde la lib http://www.libspark....yossy/swfassist

@+

#6 sl4d3

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 471 messages

Posté 30 September 2010 - 13:39 PM

Voir le messageon-event, le 30 September 2010 - 11:21 AM, dit :

heu wonderFl fonctionne :) click sur Fork en bas de page connecte toi modifie le code et lance la compilation :)


Pour ce qui est de générer du swf a la volé, si tu peux installer le sdk sur ton serveur tu pourra compiler a partir de ce dernier.
la deuxième solution c'est d’écrire un SWF a base de bytes ... regarde la lib http://www.libspark....yossy/swfassist

@+

Bien vu pour wonderfl, me semblait bien qu'on pouvait faire ca mais je trouvais plus.

Et le lien que tu donne vers swfassist, c'est exactement celui que je cherchais et dont je parlais :)

Vais pouvoir le remettre en favoris pour éviter de le perdre, merci :)

#7 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 30 September 2010 - 17:14 PM

Salut,

Un développeur que je connais le faisait dans une appli Flex pour générer et compiler au runtime des classes d'asset (donc compiler de l'AS en AS). Je ne sais pas trop comment, car le sujet ne m'attire pas beaucoup, mais ça avait quelque chose à voir avec le projet Tamarin (byte code de la VM ouvert)...
Par contre, si je ne m'abuse, au final il a laissé tombé cette solution qui était assez lourde. :)

#8 on-event

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 53 messages

Posté 30 September 2010 - 17:37 PM

dada le plus simple quand même reste swfassist :


package {
        import org.libspark.swfassist.io.ByteArrayOutputStream;
        import org.libspark.swfassist.io.DataOutput;
        import org.libspark.swfassist.swf.io.SWFWriter;
        import org.libspark.swfassist.swf.io.WritingContext;
        import org.libspark.swfassist.swf.structures.FillStyle;
        import org.libspark.swfassist.swf.structures.FillStyleTypeConstants;
        import org.libspark.swfassist.swf.structures.LineStyle;
        import org.libspark.swfassist.swf.structures.SWF;
        import org.libspark.swfassist.swf.structures.ShapeWithStyle;
        import org.libspark.swfassist.swf.structures.StraightEdgeRecord;
        import org.libspark.swfassist.swf.structures.StyleChangeRecord;
        import org.libspark.swfassist.swf.tags.DefineShape2;
        import org.libspark.swfassist.swf.tags.PlaceObject2;
        import org.libspark.swfassist.swf.tags.SetBackgroundColor;

        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.net.FileReference;
        import flash.utils.ByteArray;

        /**
         * @author goabonga
         */

        public class Main extends Sprite {
                private var swf : SWF;
                private var bytes : ByteArray;

                public function Main() {
                        createSwf();
                        setBackground();

                        drawSquare(1);
                        placeObject(1);

                        bytes = new ByteArray();
                        var output : DataOutput = new ByteArrayOutputStream(bytes);
                        var context : WritingContext = new WritingContext();
                        var writer : SWFWriter = new SWFWriter();
                        writer.writeSWF(output, context, swf);

                        stage.addEventListener(MouseEvent.CLICK, saveFile);
                }

                private function placeObject(id : int, x : int = 0, y : int = 0, depth : int = 1) : void {
                        var placeObject : PlaceObject2 = new PlaceObject2();
                        placeObject.characterId = id;
                        placeObject.depth = depth;
                        placeObject.matrix.translateX = x;
                        placeObject.matrix.translateY = y;
                        placeObject.hasCharacter = true;
                        placeObject.hasMatrix = true;
                        swf.tags.addTag(placeObject);
                }

                private function drawSquare(id : int, width : int = 20, height : int = 20, fillColor : uint = 0xfc9900, lineColor : uint = 0xfc9900, lineWidth : int = 1) : void {
                        var defineShape : DefineShape2 = new DefineShape2();
                        defineShape.shapeId = id;
                        defineShape.shapeBounds.xMax = width;
                        defineShape.shapeBounds.yMax = height;

                        var lineStyle : LineStyle = new LineStyle();
                        lineStyle.color.fromUint(lineColor);
                        lineStyle.width = lineWidth;

                        var fillStyle : FillStyle = new FillStyle();
                        fillStyle.fillStyleType = FillStyleTypeConstants.SOLID_FILL;
                        fillStyle.color.fromUint(fillColor);

                        var shape : ShapeWithStyle = defineShape.shapes;
                        shape.lineStyles.lineStyles.push(lineStyle);
                        shape.fillStyles.fillStyles.push(fillStyle);

                        var r1 : StyleChangeRecord = new StyleChangeRecord();
                        r1.fillStyle0 = 1;
                        r1.lineStyle = 1;
                        r1.moveDeltaX = 0;
                        r1.moveDeltaY = 0;
                        r1.stateFillStyle0 = true;
                        r1.stateLineStyle = true;
                        r1.stateMoveTo = true;

                        var r2 : StraightEdgeRecord = new StraightEdgeRecord();
                        r2.verticalLine = true;
                        r2.deltaY = height;

                        var r3 : StraightEdgeRecord = new StraightEdgeRecord();
                        r3.horizontalLine = true;
                        r3.deltaX = width;

                        var r4 : StraightEdgeRecord = new StraightEdgeRecord();
                        r4.verticalLine = true;
                        r4.deltaY = -(height);

                        var r5 : StraightEdgeRecord = new StraightEdgeRecord();
                        r5.horizontalLine = true;
                        r5.deltaX = -(width);

                        shape.shapeRecords.push(r1, r2, r3, r4, r5);

                        swf.tags.addTag(defineShape);
                }

                private function setBackground() : void {
                        var bg : SetBackgroundColor = new SetBackgroundColor();
                        bg.backgroundColor.fromUint(0xCCCCCC);
                        swf.tags.addTag(bg);
                }

                private function createSwf() : void {
                        swf = new SWF();
                        swf.header.version = 9;
                        swf.header.frameSize.xMax = 550;
                        swf.header.frameSize.yMax = 400;
                        swf.header.frameRate = 12;
                        swf.header.numFrames = 1;
                }

                private function saveFile(event : MouseEvent) : void {
                        var file : FileReference = new FileReference();
                        file.save(bytes, 'mySwf.swf');
                }
        }
}

 


Je vous prépare un tuto pour plus d'explications d'ici quelques jours ;)
@+

Fichier(s) joint(s)



#9 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 30 September 2010 - 17:42 PM

Voir le messageon-event, le 30 September 2010 - 17:37 PM, dit :

Je vous prépare un tuto pour plus d'explications d'ici quelques jours ;)
Bonne idée, merci. ;)

#10 yug

    Ceinture Orange

  • Members
  • PipPipPip
  • 34 messages

Posté 13 November 2010 - 11:41 AM

Citation

Je vous prépare un tuto pour plus d'explications d'ici quelques jours ;)
@+

Bonjour,

J'arrive un peu tard sur ce topic mais serais intéressé sur le tuto s'il est disponible qq part.

Merci :P

#11 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 13 November 2010 - 14:38 PM

non pas encore mais je le met en ligne d'ici la fin du mois :)

#12 yug

    Ceinture Orange

  • Members
  • PipPipPip
  • 34 messages

Posté 13 November 2010 - 16:54 PM

Voir le messagegoabonga, le 13 November 2010 - 14:38 PM, dit :

non pas encore mais je le met en ligne d'ici la fin du mois :)
Super
Merci ! :D

#13 remitelenczak

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 24 November 2010 - 14:26 PM

Salut je suis super interessé !

On peut metre des actions dans le Swf que l'on crée ?

#14 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 24 November 2010 - 18:29 PM

pas directement avec SwfAssist mais avec Eval :)
http://eval.hurlant.com/

@+

#15 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 26 November 2010 - 01:01 AM

Voir le messagegoabonga, le 13 November 2010 - 14:38 PM, dit :

non pas encore mais je le met en ligne d'ici la fin du mois :)
Miam miam ;-)

#16 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 26 November 2010 - 01:11 AM

Lilive tkt pas il arrive ;)

#17 remitelenczak

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 314 messages

Posté 04 December 2010 - 17:41 PM

up ? :(

#18 DLUS

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 83 messages

Posté 24 May 2012 - 15:50 PM

un exemple made by moi de compilation de swf à la volée : c'est un éditeur de bannière développé en Air 3.1 : http://www.labullecreative.com/BC.air

#19 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 25 May 2012 - 19:17 PM

Slt DLUS peux tu nous en dire plus (libs,....?) ?

#20 DLUS

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 83 messages

Posté 27 May 2012 - 20:24 PM

bonsoir,

Sorry pour l'absence de précision :

Pricipalement as3swf pour la création du swf et l'intégration des médias dans le nouvel swf.
(sinon JPGEncoder et PNGEncoder pour l'encodage des images)

#21 ibompuis

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 310 messages

Posté 29 May 2012 - 22:53 PM

Hello DLUS,

J'ai un peu parcouru as3swf, mais il n'y a pas beaucoup d'exemples, je me suis donc tourné vers haxe et swfmill...


Pourrais tu partager un exemple simple de création de swf avec animation de 2 images ? un petit tuto ?

Cool l'application BC.air !



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

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