IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH MX] Synchroniser une animation sur un long mp3


Sujet :

Flash

  1. #1
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut [FLASH MX] Synchroniser une animation sur un long mp3
    Bonjour,

    J'essaie de faire une animation simple sur une chanson mp3 importée dans Flash MX.

    J'ai simplement glissé-déposé mon mp3 sur un layer de la scène...

    Cela semble se passer sans trop de problème, quand je fais "Enter" à l'intérieur de Flash pour "tester en vitesse"... (l'apparition des images et le timing de la chanson semblent alors bien synchronisés).

    Le problème : c'est que dès que j'exporte l'animation en swf en dehors de Flash : IL N'Y A PLUS DE REELLE SYNCHRO...

    Les images semblent alors arriver une seconde après l'instant où j'avais décidé qu'elles devaient apparaître, par rapport au fichier musical...

    C'est embêtant...

    Comment mettre la priorité sur le déroulement du son, et s'assurer qu'une image ou animation se déroule à un moment bien précis du mp3...

    Peut-être que quelqu'un a un bon didacticiel à me conseiller ?

  2. #2
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    Est-ce que tu a fait un preload ? Je mettrai le son en externe et je le loaderai via loadSound

    @++
    Libzippp (C++)
    Lost in AStorm

  3. #3
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    En réalité, le préload, je comptais le faire après que l'animation soit devenue tip-top...

    Car mon problème de désynchronisation a lieu même si je teste mon swf en direct sur mon PC (qui n'est pas des moins musclés en RAM, Ghtz, etc...)

    Quand on teste le swf en local, je pense que je n'ai pas besoin de préload, non ? A moins qu'il faille quand même le faire par sécurité ????

    J'en viens à me demander s'il est vraiment possible de garantir une synchronisation "temps précis d'un mp3" <-> "affichage précis d'une image"

  4. #4
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    J'ai trouvé un tutorial qui devrait répondre à ma question :

    http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/index.php

    A la page 17 de ce tutorial, on explique comment déclencher des animations à des moments ultra-précis d'un son en train d'être joué...

    J'explore ce tutorial pour l'instant, et je vois si je peux l'appliquer à mon cas...
    ;-)

  5. #5
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    fait gaffe, ils filent du code flash 5

    @++
    Libzippp (C++)
    Lost in AStorm

  6. #6
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Oui, peut-être, mais les explications qu'ils donnent semblent être une technique plus appropriée pour faire ce que j'essaie de faire : synchroniser des animations précisément à certains endroits du mp3...

    Il faut en effet faire un objet Sound utilisable dans ActionScript, et gérer la variable "position" et "duration" des objets Sound...

    Certains tests que j'ai déjà fait à partir de leurs explications fonctionnent parfaitement : la synchro temporelle est rigoureusement respectée ainsi par Flash MX...

    Je vais bientôt mettre ce post en "résolu" pour ma part...

    Mais merci quand même pour l'avertissement...
    ;-)

  7. #7
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Au fait, je recherche aussi un petit tutorial pour faire une sorte de Karaoké sur une chanson en mp3...

    C'est dans la suite logique de ce que j'essaie de comprendre dans la synchronisation du son et des images...

    Si quelqu'un a un bon tuyau là-dessus, je suis preneur...
    ;-)

  8. #8
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    J'ai quelques petits problèmes encore...

    Pour l'instant, j'arrive à créer mon objet Sound, et à repérer, grâce à ce script sur la première frame, la position exacte de la chanson...

    Ce frame tourne en boucle, si je ne me trompe, car il n'y a qu'une seule frame et pas de stop()...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    son=new Sound();
    son.attachSound("CURE_playfortoday.mp3");
    trace("on démarre");
    _root.son.start(0,1);
     
    laPosition = _root.son.position/1000;
    laFin      = _root.son.duration/1000;
     
    _root.onEnterFrame = function() {
    	laPosition = _root.son.position/1000;
        laFin      = _root.son.duration/1000;
    	pourcent   = (laPosition/laFin)*100 ;
     
    	trace(" -> "+pourcent + " %");
    }
    Comment, à partir de ça, puis-je contrôler et manipuler des scènes ou des movie clip, dans cette boucle principale ?

    Je sens que cela ne doit pas être très difficile mais je cale un peu...
    (Pour info : je suis débutant en ActionScript, mais je connais bien Java... N'hésitez donc pas à me conseiller des instructions qui vous semblent évidentes mais que je ne connais pas bien encore...)

  9. #9
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Problème ENFIN résolu pour moi, je prends la peine de poster ici le code complet que j'ai encore amélioré hier soir, en utilisant un tableau. Voici la procédure :

    Sur le layer "action" frame 1, on peut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    son=new Sound();
    son.attachSound("leforestier_billedeverre.mp3");
    trace("On démarre");
    _root.son.start(0,1);
     
    laPosition = _root.son.position/1000;
    laFin      = _root.son.duration/1000;
     
    var etapeEnCours = 0;
     
    etape = new Array();
    // faisons 5 étapes dans la chanson :
    for (var i=0; i<5; i++) {
                            etape.push( new Array(3) );
                            }
     
    etape[ 0][0]="clip_00"; etape[ 0][1]= 1.2; etape[0][2]= 0;
    etape[ 1][0]="clip_01"; etape[ 1][1]= 2.2; etape[1][2]= 0;
    etape[ 2][0]="clip_02"; etape[ 2][1]= 3.2; etape[2][2]= 0;
    etape[ 3][0]="clip_03"; etape[ 3][1]= 4.2; etape[3][2]= 0;
    etape[ 4][0]="clip_04"; etape[ 4][1]= 5.1; etape[4][2]= 0;
     
    trace("etape = "+etape);
    On définit donc ici clairement dans le tableau à quel pourcentage, tel clip est joué sur la scène...
    Le clip "clip_02" sera joué entre 2.2 % et 3.2 %.

    Et sur le layer "action" frame 2, on met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    _root.onEnterFrame = function()
    {
    laPosition = _root.son.position/1000;
    pourcent   = (laPosition/laFin)*100 ;
     
    trace("-> "+pourcent + " % ### "+etape[etapeEnCours][0]+" - "
                                    +etape[etapeEnCours][1]+".");
     
    if (pourcent < etape[etapeEnCours][1])
    	    {
    	    if ( etape[etapeEnCours][2] == 0 ) // si film pas encore lancé :
    	        {
             this.attachMovie(etape[etapeEnCours][0], etape[etapeEnCours][0], 0);
             setProperty(etape[etapeEnCours][0],_x, _root._width/2);
             setProperty(etape[etapeEnCours][0],_y, _root._height/2);
             trace(" on a lancé un nouveau film." );
             _root.etape[etapeEnCours][0].play();
             etape[etapeEnCours][2] = 1;
             }
         else { } // on laisse jouer dans ce cas-ci...
         }
    else {
         etape[etapeEnCours][0].stop();
         etape[etapeEnCours][0].removeMovieClip();
         etape[etapeEnCours][2]=0;
         // on passe à l'étape suivante :
         etapeEnCours++;
         // si on dépasse le nombre de clips disponible (ici 5, donc de 0 à 4 )
         if (etapeEnCours > 4) {
                               etapeEnCours = 4;
                               }
         }
    gotoAndPlay(2);
    }
    En espérant que cela aidera ceux qui ont besoin de synchroniser parfaitement des images ou des animations sur un mp3...
    (Pour faire un karaoké, par exemple !!)

    ;-)

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    merci ca va me servire inormiment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 5] Compteur d'arrêt d'une animation sur Flash 5
    Par heterocera dans le forum Flash
    Réponses: 3
    Dernier message: 14/12/2006, 11h33
  2. [Flash] Préloader une animation sur mon site?
    Par nicotine dans le forum Flash
    Réponses: 2
    Dernier message: 22/05/2006, 12h42
  3. Réponses: 6
    Dernier message: 14/12/2004, 02h47
  4. Réponses: 5
    Dernier message: 01/12/2004, 16h37
  5. [FLASH MX] Quitter une animation flash
    Par lord enzo dans le forum Flash
    Réponses: 11
    Dernier message: 19/10/2004, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo