Le Blog

  • : Le blog de Romain Dedenis
  • : Un blog relatif à la programmation web, vous trouverez ici des tutoriels sur différents langages tel que le flash, le php... Ainsi que différentes astuces et articles. Bonne visite :)
  • Contact

Contacts

viadeo-icone-5757-48.png linkedin.png

Liens Utiles

 

Documentation Flash as 3.0 :

Flash as 3.0

 

Documentation moteurs 3D Flashs :


Documentation Utilitaires 3D Flashs :

Et bien sûr, le fil RSS du Blog ! rss

2 mai 2011 1 02 /05 /mai /2011 21:46

Pour se faire, nous allons repartir d'un précédent tutoriel ( Flash AS 3.0 : Capturer le son du microphone (lire, enregistrer ...) ), et on va y apporter quelques modifications. Donc avant toute chose, commencez par ce dernier !

 

Une fois que vous aurez suivit ce premier tutoriel, nous allons maintenant rajouter une bibliothèque (pensez bien à la lier à votre .fla):

  • La lib Shine disponible à cette adresse : shine.swc.
  • ShineMP3Encoder disponible à cette adresse : ShineMP3Encoder.zip (l'extraire dans le repertoire du projet)

 

Code source

Ici, nous allons juste un peu adapter notre code pour venir y intégrer le convertisseur mp3. Allez c'est partit! :) (en vert les ajouts et/ou modifications).

 

 

package{
    import org.bytearray.micrecorder.encoder.WaveEncoder;
    import org.bytearray.micrecorder.MicRecorder;
    import org.bytearray.micrecorder.events.RecordingEvent;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.MovieClip;
    import org.as3wavsound.WavSound;
    import flash.net.FileReference;

    import fr.kikko.lab.ShineMP3Encoder;


    public class Main extends MovieClip{
        private var volume:Number = .5;
        private var wavEncoder:WaveEncoder;
        private var recorder:MicRecorder;
        private var fileReference:FileReference;

        private var shine:ShineMP3Encoder;
       
        public function Main(){
            wavEncoder = new WaveEncoder( volume );
            recorder = new MicRecorder( wavEncoder );


            recorder.addEventListener( RecordingEvent.RECORDING, onRecording);
            recorder.addEventListenerEvent.COMPLETE, onRecordComplete);


            btn.addEventListenerMouseEvent.CLICK, btnClick);

            btn.label = "Record";
            btn_save.alpha = 0;
            btn_save.addEventListenerMouseEvent.CLICK, save);


            fileReference = new FileReference();
        }
       
        private function onRecording(e:RecordingEvent){
            trace("recording");
        }
       
        private function onRecordComplete(e:Event){
            //var player:WavSound = new WavSound( recorder.output );
            //player.play();
        }
       
        private function btnClick(e:MouseEvent){
            if(btn.label == "Record"){
                btn.label = "Stop";
                recorder.record();
            } else {
                btn.label = "Record";
                recorder.stop();
                btn_save.alpha = 1;

                shine = new ShineMP3Encoder(recorder.output);

                     shine.addEventListener(Event.COMPLETE, save);

                     shine.start();

            }
        }
       
        private function save(e:Event){
            fileReference.save ( shine.mp3Data, "recording.mp3" );
        }
    }
}

 

Et vous voilà maintenant capable d'enregistrer le son provenant du micro en MP3!!! Enjoy :)

 

Ce tutoriel vous a été utile?rssAbonnez-vous au fil RSS !



Romain Dedenis.
Partager cet article
Repost0
22 mars 2011 2 22 /03 /mars /2011 23:49

 

Après avoir cherché un peu de partout sur internet et voir toujours la même réponse qui dit qu'il est impossible de dupliquer un MovieClip, un Sprite ou tout objet héritant de DisplayObject, je me suis penché sur la question et j'ai trouvé une solution plus ou moins tangible...

 

Le projet se nomme FlCloneIt que vous pouvez récupérer ici : FlCloneIt.swc.

J'ai compilé la classe sous forme de .swc que vous pouvez utiliser et diffuser librement tant que vous citer la source (c'est à dire moi et ce blog :D ).

De manière globale, elle vous permettra de dupliquer n'importe quel type d'objet :).

 

 

Utilisation avec un MovieClip :

 

var mcTest:MovieClip = new MovieClip();

// définisser lui des propriétés ...

 

var copy:* = FlCloneIt.clone(  mcTest );    // Il suffit de lui passer en paramêtre l'objet à dupliquer

copy.name = "different_from_target";       // Si l'objet possède un nom, pensez à lui en donner un autre pour éviter les conflits

 

 

Vous voilà maintenant en possession d'une réplique exacte de votre premier MovieClip !

 

 

 

 

Vous avez trouvé cet article interressant?
  rss




  Romain Dedenis.
Partager cet article
Repost0
12 janvier 2011 3 12 /01 /janvier /2011 22:19

Ce soir nous allons nous pencher sur les objets dynamiques en Flash. Plusieurs d'entre vous m'ont demandé comment il est possible en as3 de récupérer le nom des attributs d'un objet dynamique ainsi que leur valeurs.

 

Prenons un exemple d'objet dynamique simple :

 

var o:Object = new Object();

o.name= "monMovieClip";

o.x = 100;

o.y = 120;

 

Imaginons maintenant que nous souhaitons affecter les valeurs de cet objet à un MovieClip. Il nous serait possible de faire comme ceci :

 

var monMC:MovieClip = new MovieClip();

monMC.name = o.name;

monMC.x = o.x;

monMC.y = o.y;

 

Ok me direz vous, mais si nous ne connaissons pas tous les attributs présents dans o comment faisons nous? Et bien justement, voici une méthode pour s'en affranchir :).

 

var monMC:MovieClip = new MovieClip();

for( var key:String in o){

   monMC[key] = o[key];

}

 

 

Maintenant que nous avons vu les bases, mettons en situation ce code pour mieux comprendre son intérêt.

Nous allons réaliser une classe qui va charger un fichier xml qui contiendra diverses informations d'un MovieClip qui sera ensuite placer sur la scène (par flegme et parce que je sais que vous êtes capable de loader un fichier XML tout seul, je vais intégrer directement le XML dans mon code, sans le charger ^^).

 

package{
    import flash.display.Sprite;
    import flash.display.MovieClip;
   
    public class Main extends Sprite{
       
        public function Main(){
            var xml:XML = <App>
                            <config>
                                <name>monMovieClip</name>
                                <x>150</x>
                                <y>100</y>
                                <width>250</width>
                                <height>120</height>
                            </config>
                          </App>;
           
            var o:Object = new Object();
            //On affecte les valeurs du XML à notre objet (name, x, y...)
            for each(var attribut:XML in xml.config.children()){
                o[attribut.localName()] = attribut.text();
            }
           
            var monMC:MovieClip = new MovieClip();
            //On affecte les valeurs de notre objet au MovieClip (name, x, y...).
            for(var key:String in o){
                monMC[key] = o[key];
            }
            addChild(monMC);
        }
    }
}

 

Dans cet exemple, il est vrai qu'une telle solution n'est pas très utile... Mais je compte sur votre imagination fertile pour mettre en application ce code :).

 

 

 

Vous avez trouvé cet article intéressant? rss Abonnez-vous au fil RSS !




Romain Dedenis.
Partager cet article
Repost0
9 janvier 2011 7 09 /01 /janvier /2011 18:49

 

Dans ce tuto, je vais vous présenter une manière simple de transformer un de vos fichiers flash (.swf) en applications pour Android (.apk). Pour ceux qui ont Flash CS5, je vous conseille de suivre ce tuto sur Médiabox.

Pour les autres ou ceux qui sont curieux, ça se passe par ici.

 

android.jpg

 

I/ Utilisation du SDK Air 2.5

 

Commencer par récuperer le SDK Air 2.5 ici (ou directement sur le site d'Abode). Avant de continuer vérifier aussi que vous possèder bien la dernière version de la JRE Java sur votre poste.

 

Ensuite, decompresser l'archive du SDK et aller dans le repertoire bin.

Pour continuer, veuillez copier dedans un fichier swf (par exemple, copier le résultat du tuto sur la gestion du multi-touch avec Flash).

 

 

II/ Création d'un certificat de développeur

 

Pour pouvoir utiliser le fichier adt.bat qui va nous permettre de transformer notre fichier Flash en package Android, il va nous falloir commencer par créer un certificat de sécurité. Ceci n'est pas très compliqué rassurez vous :).

 

Toujours dans le repertoire bin, créer un nouveau fichier createCertificate.bat. Dedans copier le code suivant en faisant les modification nécessaire vous correspondant :

 

adt -certificate -cn votre_nom 1024-RSA certificat.p12 votre_mot_de_passe

 

Ceci fait, lancer le fichier bat en double cliquant dessus (pour ceux qui ne savent pas ce qu'est un fichier batch je vous renvois ici). Maintenant, vous devez avoir un nouveau fichier certificat.p12 dans le repertoire bin.

 

 

III/ Création d'un descripteur d'application

 

Pour pouvoir packager votre application, le compilateur a besoin de savoir le nom de votre application, sa version, s'il a besoin de ressources externes (images, sons ...) ... C'est à ça que va nous servir le descripteur.

 

A l'action ! Créer un fichier android-app.xml (toujours dans le repertoire bin, pour faire simple, tout se passe dans ce repertoire donc restez y !). Ensuite, dedans copiez y le code suivant :

 

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/2.5">
 
 <id>Nom_de_votre_application</id>
 <versionNumber>1.0</versionNumber>
 <filename>Nom_de_votre_application</filename>
 
 <name>Nom_de_votre_application</name>
 <description></description>
 <copyright></copyright>
 
 <initialWindow>
  <title>Nom_de_votre_application</title>
  <content>android-app.swf</content>
 </initialWindow>
 
 
 <android>
  <manifestAdditions>
   <![CDATA[<manifest>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera.autofocus"/>
   </manifest>]]>
  </manifestAdditions>
 </android>
</application>

 

 

En vert, le nom de l'application, ça je pense vous l'avez compris :).

En rouge, le nom du fichier Flash à packager (pour ma part je l'avais nommer android-app.swf)

Enfin, en orange le manifeste. Deux chose à y différencier, les uses-permission qui autorise une application à pouvoir acceder aux périphériques de la machine (dans cet exemple, cela permet à l'application d'utililser la caméra du mobile) et les uses-feature qui permettent d'accèder aux fonctions hardware de la machine. La liste des permissions se trouve ici et celle des features ici.

 

Vous pouvez maintenant supprimer ces 2 lignes à moins que l'application que vous souhaitez packager n'ai besoin de l'accès caméra...

 

 

IV/ Dernière ligne droite, le packaging :)

 

Après ce long chemin, nous touchons enfin le graal du bout de doigts!

Allez je ne vous fait pas plus patienter. Créer un fichier createPackage.bat et copiez y le code suivant :

 

adt -package -target apk -storetype pkcs12 -keystore certificat.p12 nom_de_votre_application.apk android-app.xml .

 

N'oubliez pas de copiez le point de la fin, j'ai passé deux heures à chercher pourquoi cela ne marchais pas lors de mon premier essai et cela venait de ce maudit point!

 

Maintenant, enregistrez et lancer le fichier createPackage.bat, il vous est maintenant demander de rentrer le mot de passe de votre certificat (étape II). Entrer le et valider avec Entrée.

 

Et là si tout c'est bien passé, un fichier nom_de_votre_application.apk est maintenant présent dans le dossier bin.

Vous n'avez maintenant plus qu'à transférer ce fichier apk sur votre mobile ou tablette android et enjoy! :)

 

 

 

 

 

Vous avez trouvé cet article intéressant? rss Abonnez-vous au fil RSS !




Romain Dedenis.
Partager cet article
Repost0
9 janvier 2011 7 09 /01 /janvier /2011 17:17

Le player Flash 10.1 intègre la gestion du multitouch (flash.ui.Multitouch) pour les écrans tactiles voir pour des applications mobiles (je vous présenterai dans un prochain tuto comment transformer votre application Flash en application Android pour mobile ou tablette).

 

Nous allons réaliser très simplement une petite application prenant en compte le multitouch en utilisant TransformGestureEvent.

 

I/ Présentation rapide de TransformGestureEvent.

 

Cette classe présente dans flash.events nous permet d'utiliser la gestion des gestures du multitouch.

Hum hum, c'est à dire?! En fait la gesture est simplement le fait d'associer une action à un mouvement des doigts bien précis. Par exemple, comme sur un Iphone ou autre smartphone, quand vous faite glisser votre doigt de haut en bas de l'écran, ceci déclenche le défilement de l'information. Et bah voilà, c'est simplement ça la gesture.

 

Pour nous simplifier la vie, TransformGestureEvent intègre la prise en charge des 4 "grands" type de Gesture : La rotation, le zoom, le défilement et le glisser (respectivement Rotate, Zoom, Pan et Swipe). Ces actions s'effectuent avec 2 doigts sur l'écran.

 

 

II/ Application à travers un exemple de TransformGestureEvent.

 

Dans cette exemple, nous allons dessiner un rectangle rouge que nous allons rendre sensible à la gesture multitouch.

 

code source

 

package{
    import flash.display.Sprite;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;
    import flash.events.TransformGestureEvent;
   
    public class GestureTest extends Sprite{
       
        public function GestureTest(){
            //On indique à Flash qu'il faut qu'il prenne en compte le Multitouch en mode gesture
            Multitouch.inputMode = MultitouchInputMode.GESTURE;
           
            //On créer un rectangle rouge
            var spr:Sprite = new Sprite();
            spr.graphics.beginFill(0xff0000);
            spr.graphics.drawRect(-50, -50, 100, 100);
            spr.graphics.endFill();
            spr.x = 200;
            spr.y = 150;
            addChild(spr);
           
            //On ajoute les évênements de gesture au rectangle (zoom, rotation, defilement)
            spr.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);
            spr.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onRotate);
            spr.addEventListener(TransformGestureEvent.GESTURE_PAN, onPan);
        }
       
        private function onZoom(e:TransformGestureEvent):void{
            //e.scaleX et e.scaleY permettent de récupérer l'agrandissement en largeur et en hauteur
            e.target.scaleX *= e.scaleX;
            e.target.scaleY *= e.scaleY;
        }
       
        private function onRotate(e:TransformGestureEvent):void{
            //e.rotation nous permet de récuperer l'angle de rotation correspondant à la gesture
            e.target.rotation += e.rotation;
        }


        private function onPan(e:TransformGestureEvent):void{
            //e.stageX et e.stageY nous permettent de récupérer la position de sur la scene de la gesture
            e.target.x = e.stageX;
            e.target.y = e.stageY;
        }
    }
}

 

Noubliez pas, nous faisons du multitouch donc c'est avec les 2 doigts que doivent s'effectuer les actions ci-dessus!

 

Comme je vous le disais plus haut, je vous présenterais bientôt une méthode très simple pour transformer votre application Flash en application pour Android ! En attendant, amusez vous bien avec le multitouch :)

 

 

 

Vous avez trouvé cet article intéressant? rss Abonnez-vous au fil RSS !




Romain Dedenis.
Partager cet article
Repost0
12 juillet 2010 1 12 /07 /juillet /2010 18:27

Travaillant actuellement sur le développement de la reconnaissance vocale avec Flash / Flex, je me suis penché sur la capture du son provenant du micro pour pouvoir ensuite traiter le résultat. Donc voici une des possibilités pour y arriver.

 

I/ Des outils pour nous simplifier la vie.

 

Mon but n'étant pas de réinventer la roue constamment, je me suis tourné vers 2 bibliothèques en AS 3 pour mettre en oeuvre ce tutoriel.

 

II/ Code Source

 

La source que je vais vous fournir maintenant, va nous permettre d'enregistrer un son avec le microphone. Ensuite, il sera lu par le lecteur Flash et une option vous permettra d'enregistrer le fichier sur votre ordinateur. Il vous faudra impérativement le Flash Player 10.1 ou supérieur.

 

Et c'est partit !

 

Pré-requis : créer sur sur votre .fla deux boutons, le premier nommé btn et l'autre btn_save.

 

package{
    import org.bytearray.micrecorder.encoder.WaveEncoder;
    import org.bytearray.micrecorder.MicRecorder;
    import org.bytearray.micrecorder.events.RecordingEvent;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.MovieClip;
    import org.as3wavsound.WavSound;
    import flash.net.FileReference; //je vous renvois à la doc actionscript 3

    public class Main extends MovieClip{
        private var volume:Number = .5;
        private var wavEncoder:WaveEncoder;
        private var recorder:MicRecorder;
        private var fileReference:FileReference;
       
        public function Main(){
            wavEncoder = new WaveEncoder( volume );
            recorder = new MicRecorder( wavEncoder );


            recorder.addEventListener( RecordingEvent.RECORDING, onRecording);
            recorder.addEventListener( Event.COMPLETE, onRecordComplete);


            btn.addEventListener( MouseEvent.CLICK, btnClick);

            btn.label = "Record";
            btn_save.alpha = 0;
            btn_save.addEventListener( MouseEvent.CLICK, save);


            fileReference = new FileReference();
        }
       
        private function onRecording(e:RecordingEvent){
            trace("recording");
        }
       
        private function onRecordComplete(e:Event){
            var player:WavSound = new WavSound( recorder.output );
            player.play();
        }
       
        private function btnClick(e:MouseEvent){
            if(btn.label == "Record"){
                btn.label = "Stop";
                recorder.record();
            } else {
                btn.label = "Record";
                recorder.stop();
                btn_save.alpha = 1;
            }
        }
       
        private function save(e:MouseEvent){
            fileReference.save ( recorder.output, "recording.wav" );
        }
    }
}

 

Résultat Obtenu : Test en live

Cliquez sur Record puis parler et ensuite cliquez sur Stop pour entendre le résultat (save permet d'enregistrer)

 

 


 

Ce tutoriel vous a été utile?

rss

Abonnez-vous au fil RSS !



Romain Dedenis.
Partager cet article
Repost0
31 décembre 2009 4 31 /12 /décembre /2009 18:27
Pour adapter la taille de votre scène à celle du navigateur sans déformer l'affichage de votre application, il suffit de rajouter ces 2 lignes de codes sur votre scène:

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

La première ligne à pour effet de définir l'origine de votre scène en haut à gauche de la fenêtre du navigateur, alors que la seconde sert à redimmensionner en conservant les tailles d'origines de vos objets présents sur la scène.
Petite astuce, mais très utiles pour ne pas voir son application complètement déformée lors du chargement sur un navigateur ;).
Partager cet article
Repost0
30 décembre 2009 3 30 /12 /décembre /2009 21:25
Il est possible avec Flash d'utiliser des périphériques tels que des WebCams ou Micros au sein de nos applications. Nous pouvons donc ainsi facilement récupérer le flux vidéo d'une WebCam pour l'afficher à l'écran ou récupérer les sons captés par le micro. Les applications peuvent être de diverses formes, comme par exemple, la réalité augmentée qui est à la mode aujourd'hui (un  petit exemple plutôt impressionant).

Voici un code simple permettant d'activer et d'afficher ce que film la WebCam:

//imports des classes
import flash.media.Camera;
import flash.media.Video;

//création d'une nouvelle Camera
var camera:Camera = Camera.getCamera();
camera.setMode( 640, 480, 30 ); //setMode( width, height, ips )
//création du conteneur recevant la vidéo ici définit à width=640px et height = 480px
var video:Video = new Video( 640, 480 );
//on attache la caméra à la vidéo
video.attachCamera( camera );
//on ajoute le conteneur à la scène
addChild(video);


Et voilà, le tour est jouer, vous avez maintenant le flux de votre WebCam qui s'affiche en continu!
Nous verrons dans un prochain tutoriel comment réaliser une détection de mouvements simple en utilisant la WebCam.
Partager cet article
Repost0