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

ActionScript 3 Discussion :

Array random : disparaitre


Sujet :

ActionScript 3

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut Array random : disparaitre
    Bonjour tout le monde,
    je suis relativement nouveau en actionscript et essai de construire un jeu, ou un array de movie clip fait apparaitre un movieclip (au hasard) pendant un temps au hasard, mon problème est que le movie clip apparait bien au hasard, mais quand le suivant est appelé au hasard (avec setInterval), le premier reste présent :-S :

    mon code :

    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
    var movieClipArray:Array = new Array(new monClip1(),new monClip2(),new monClip3(),new monClip4(),new monClip5())
    var randomInteger:int;
    var selectedMovieClip:MovieClip;
     
    // pour clip au hasard :
     
    function showMovieClip()
    {
       randomInteger = Math.floor(Math.random()*movieClipArray.length)
       selectedMovieClip = movieClipArray[randomInteger];
     
       monClip_mc.addChild(selectedMovieClip);
     
     
    }
     
     
    // pour temps au hasard :
     
    var timer:Timer = new Timer(Math.round(Math.random()*1000));
    timer.addEventListener(TimerEvent.TIMER, iterate);
    timer.start();
    function iterate(e:TimerEvent):void{
        trace(timer.delay);
        var minLimit2:uint = 700;
        var maxLimit2:uint = 1300;
     
        var range2:uint = maxLimit2 - minLimit2;
        timer.delay = Math.round(Math.random()*range2) + minLimit2;
    }
     
    setInterval(showMovieClip, timer.delay);

    Quelqu'un pourrait-il me donner un coup de pouce ??

    Merci d'avance

    Olivier

  2. #2
    Membre éprouvé
    Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Juin 2009
    Messages : 130
    Par défaut
    Hello

    De la manière dont est fait ton code, la fonction showMovie clip n'est appelé qu'un fois, grace au setInterval. De plus, il n'y a aucun endroit où tu supprime
    selectedMovieClip.

    le setInterval est inutile puisqu'il tick au même moment que ton timer. Pourquoi donc ne pas utiliser la même fonction?



    Code AS3 : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    var movieClipArray:Array = new Array(new monClip1(),new monClip2(),new monClip3(),new monClip4(),new monClip5())
    var randomInteger:int;
    var selectedMovieClip:MovieClip;
    var timer:Timer = new Timer(Math.round(Math.random()*1000));
    timer.addEventListener(TimerEvent.TIMER, iterate);
     
    //fonction d'initialisation
    initialize();
     
    function initialize():void
    {
       //tu créé le premier clip
       showMovieClip();
       //tu lance le jeu
       timer.start();
    }
     
     
    function showMovieClip()
    {
       //si selectedMovieClip à déjà été créé, tu le zigouille
       if(selectedMovieClip != null){
         if(monClip_mc.contains(selectedMovieClip)) monClip_mc.removeChild(selectedMovieClip);
       }
     
       //Puis tu fais ton random
       randomInteger = Math.floor(Math.random()*movieClipArray.length)
       selectedMovieClip = movieClipArray[randomInteger];
     
       monClip_mc.addChild(selectedMovieClip);
    }
     
    function iterate(e:TimerEvent):void{
       //tu commence par changer ton movieClip
       showMovieClip();
     
       //puis tu set ton prochain delay
       var minLimit2:uint = 700;
       var maxLimit2:uint = 1300;
     
       var range2:uint = maxLimit2 - minLimit2;
       timer.delay = Math.round(Math.random()*range2) + minLimit2;
    }

    et voilà, plus de setInterval inutile, et surtout removeChild du clip :o)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut
    Super,
    un grand merci à toi, cela fonctionne parfaitement, et c'est en effet plus simple,

    Pour ceux qui utiliseront ce code, il y avait une petite erreur qui l'empechait de se lancer dans showMovieClip() , à savoir remplacer :
    if(contains(selectedMovieClip)) par monClip_mc. ...

    Merci encore, commence bien la journée !

  4. #4
    Membre éprouvé
    Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Juin 2009
    Messages : 130
    Par défaut
    Exact, j'ai modifié mon exemple au cas où :o)

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

Discussions similaires

  1. cherche la fonction random d'un array en asp.net
    Par manuso dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/10/2010, 23h17
  2. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  3. [VB6] : pour faire un Randomize sous vb... merci
    Par delnic dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/01/2003, 15h49
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Random en Assembleur
    Par funx dans le forum Assembleur
    Réponses: 9
    Dernier message: 02/09/2002, 17h05

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