Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2010, 18h02   #1
Invité de passage
 
Olivier Roche
Inscription : novembre 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Olivier Roche

Informations forums :
Inscription : novembre 2010
Messages : 4
Points : 0
Points : 0
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 :
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
farandhigh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 23h52   #2
Membre habitué
 
Développeur multimédia
Inscription : juin 2009
Messages : 128
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : juin 2009
Messages : 128
Points : 148
Points : 148
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 :
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)
fazermokeur est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2010, 09h28   #3
Invité de passage
 
Olivier Roche
Inscription : novembre 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Olivier Roche

Informations forums :
Inscription : novembre 2010
Messages : 4
Points : 0
Points : 0
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 !
farandhigh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 21h53   #4
Membre habitué
 
Développeur multimédia
Inscription : juin 2009
Messages : 128
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : juin 2009
Messages : 128
Points : 148
Points : 148
Exact, j'ai modifié mon exemple au cas où :o)
fazermokeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h54.


 
 
 
 
Partenaires

Hébergement Web