Forums Développement Multimédia

Aller au contenu

Un timer pour organiser des flèches

CODE Actionscript

2 réponses à ce sujet

#1 neitanod

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 66 messages

Posté 23 April 2013 - 15:00 PM

Bonjour,

J'ai un grand schéma rempli de flèches. Je joins un extrait.

Les flèches doivent, au clic du bouton, partir à des temps différents. Dans un premier temps, je les avais inséré dans un clip général où elles partaient à des frames séparés mais ça ne convient pas à ce que je veux faire par la suite.

Je me dirige donc vers un timer mais je ne sais pas comment faire malgré mes recherches.

Fichier(s) joint(s)



#2 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 16:14 PM

Salut :)

si tu convertissais les sources en une version plus ancienne de Flash tu augmenterais tes chances qu'il soit regardé, tu peux aussi coller le code concerné ;)




Fais de tes flèches des clips avec un stop en image 1, pose les clips sur la scène avec un "nom incrémenté" (fleche1, fleche2…) il ne te restera plus qu'à qu'à invoquer un play() sur le clip concerné* via la fonction de rappel d'un Timer, et par exemple utiliser la propriété currentCount de l'événement pour l’arrêter au troisième "tour".


* soit tu les as stockés dans un tableau et c'est currentCount qui sert d'index, soit tu utilises du getChildByName


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

#3 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 25 April 2013 - 17:47 PM

en faisant le ménage sur mon disque vl'a-t-y pas que je trouve ton fichier qui cette fois s'ouvre - en râlant que c'est CS6, mais ouvre \o/

tu y étais de la construction :)

restait à installer un Timer, si tu n'as jamais fait commence par ces quelques lignes et patiente une seconde 1/2 ;)

var _tm:Timer = new Timer(1500,3);// toutes 1500 secondes, trois fois
_tm.addEventListener(TimerEvent.TIMER,afficheFleche);


btn.addEventListener(MouseEvent.CLICK, lecture);
function lecture(evt:MouseEvent) {
        _tm.start();
}

function afficheFleche(te:TimerEvent) {
        trace(te.currentTarget.currentCount);
}

(j'ai modifié le nom du bouton en minuscules, tant qu'à faire autant prendre de bonnes zabitudes)

si tu nommes les flèches fleche1, fleche2,fleche3 (ce n'est pas une bonne idée en majuscules avec le même nom que le symbole, ce n'est pas la même chose)

il te reste à "fabriquer" le nom de la flèche avec te.currentTarget.currentCount, récupérer l'objet qui porte ce nom et lui appliquer un play()

Si tu fais ça, tu vas devoir attendre une seconde 1/2 avant que la première flèche se dessine. la solution c'est de ne "jouer" le timer que deux fois et de lancer la première flèche dès le clic :



import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.DisplayObject;

var _tm:Timer = new Timer(1500,2);// deux fois seulement la première est lancée immédiatement,
_tm.addEventListener(TimerEvent.TIMER,afficheFleche);


btn.addEventListener(MouseEvent.CLICK, lecture);
function lecture(evt:MouseEvent) {
        fleche1.play()// la première immédiatement jouée
        _tm.start();// lancer le timer
}

function afficheFleche(te:TimerEvent) {
        trace(te.currentTarget.currentCount);
        var d:DisplayObject=getChildByName("fleche"+(te.currentTarget.currentCount+1))
        MovieClip(d).play()
}


 


:)

Fichier(s) joint(s)

  • Fichier joint  ESSAI.fla   17.73 Ko   2 téléchargement(s)

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



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

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