Chargement de clips en fonction du numero de l'image

nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009 - 19 févr. 2007 à 21:36
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009 - 25 févr. 2007 à 15:18
Bon, je sais, l'intitulé du poste est un peu rocambolesque... Cela rique d'être compliqué à expliquer en plus...
J'ai une anim de 150 images en boucle, un calque avec un clip vide cible, un bouton sur un autre calque qui est visible sur toute l'anim. Ce que je souhaite faire, c'est que quand j'appuie sur le bouton cela lance un autre clip dans la cible uniquement quand la tête de lecture passera sur l'image 45. Quelque soit la position de la tête de lecture sur l'anim, je pourrais cliquer n'importe quand pendant la lecture de l'anim, le chargement de l'autre clip ne se fera qu'à l'image 45, mais si je n'appuie pas sur le bouton, rien ne se passera... Voilà, j'espère que c'est clair et merci de votre aide.

4 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
20 févr. 2007 à 20:46
Pour récupérer la frame lue d'un clip, voici sa propriété : nom_clip._currentframe

Après il te suffit de vérifier que le clip est à la frame 45 quand on clique :

nom_bouton.onRelease = function(){
    if(nom_clip._currentframe == 45){
       trace("action");
    }
}

A+

--------- Darkrats ---------

la loi est dure mais c'est la loi

 -------- Infograpix --------
0
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009
23 févr. 2007 à 20:12
Hm... Merci chef, mais ton code (si je l'ai bien utilisé) ne correspond pas à ce que je cherche. Il invalide l'action liée au bouton sauf si on clique pile à l'image 45. Ce que je cherche c'est que l'action soit retardée, c'est à dire que quelque soit la frame du scénario si je clique sur le bouton, l'action qui lui est lié ne devient éffective qu'à une frame précise et seulement quand la tête de lecture passe sur cette frame précise. En gros je voudrais demander à Flash de mettre l'action en mémoire quand je clique sur le bouton et qu'il la load uniquement quand la tête de lecture passe sur cette frame. Voilà, je sais pas si c'est bien clair... Merci quand même.
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
23 févr. 2007 à 22:14
Si j'ai bien saisi, tu veux que quand on clique sur un bouton, Flash stocke l'action du bouton et ne l'enclenche que si on atteint la frame demandée ...

Tu peux sauver la fonction demandée dans un tableau (ce qui te permettra de sauver plusieurs actions successivement) :
--- Code :
    // Tableau qui stockera les actions à lancer
   var tableau_sauvegarde   :Array   = new Array();
    // Fonction concernée par le bouton de mon exemple  
    function fonction_cible(){
        trace("action");
    }
    // Action du bouton
    bouton.onRelease = function(){
       // Analyse de la fonction et de la frame
       var valeur_frame              :Number   = 45;
       var fonction_demandee    :Function   = fonction_cible;
      // Sauvegarde des informations dans un objet, mais on peut le faire aussi via un tableau à deux cellules (la première sauvant la frame et l'autre le raccourcis vers la fonction)
       tableau_sauvegarde.push({frame:valeur_frame,  fonction:fonction_demandee});
    }
---
Puis pour l'analyse de la frame en cours : 2 possibilités.
Si tu n'as pas énormément de frame "sensible", tu peux mettre une fonction sur la frame en question qui lancera une fonction d'analyse :
--- Code :
    // Fonction d'analyse
    function analyse_action_frame(frame:Number){
       // On analyse en boucle le tableau de sauvegarde
       for(var cellule in tableau_sauvegarde){
          // Vérifie que la frame en cours a une action associée à lancer
          if(tableau_sauvegarde[cellule].frame == frame){
             // Lance l'action associée
             tableau_sauvegarde[cellule].fonction();
             // Si il faut envoyer des paramètres, ou les sauver lors du clic du bouton, on peut faire d'autres propriétés à l'objet
          }
       }
    }
    // Code sur la frame 45:
    analyse_action_frame(45);
---
Si par contre, il y a énormément de frame cible, alors mieux vaut faire un set interval avec comme temps : le temps de changement de frame.

J'espère que ça pourra t'aider ... ou t'inspirer :)

A+
--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
0
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009
25 févr. 2007 à 15:18
Merci chef. C'est parfait et je vais éffectivemment utiliser le set Interval. C'est très sympa de ta part, tu déchires, top super de la balle... euh.... Je suis en panne de superlatif !
A plus.
0
Rejoignez-nous