Roue de la fortune, du destin, etc (entierement as)

Soyez le premier à donner votre avis sur cette source.

Vue 38 910 fois - Téléchargée 2 363 fois

Description

Ce code permet de faire tourner une roue découpée en X morceaux, et de la faire s'arreter quand on veut sur la case que l'on veut.
Le morceau pointé à la fin par la flèche peut-être soit déterminé aléatoirement soit manuellement (cela permet par exemple de récupérer la case à afficher par un script PHP).
Il est possible de déterminer le nombre de tours qu'effectue la roue avant de ralentir.
Il est possible de déterminer une marge pour éviter que la flèche soit trop proche des limites entre les cases.
Ce script prend en compte un clip de roue flouée, pour donner un pti effet de vitesse (dans l'exemple il est très moche ^^).

Voilà, il y a bien sur des améliorations à faire, mais ce code fonctionne.

Source / Exemple :


var tabCouleurs=["violet","orange","magenta","cyan","jaune","bleu","vert","rouge"];//Votre tableau avec les possibilités
var ecartSecu=10;//Marge par rapport aux limites
var nbTours=10;//Le nombre de tours avant l'arret

var tabAngles = new array();//Le tableau qui accueillera les fourchettes des angles possibles en fonctions de la couleur

var largeurTranche=(360/tabCouleurs.length)-ecartSecu;//la largeur d'une tranche de couleur

//On détermine nos tranches en prenant compte de l'écart de sécurité
for(var i=0;i<tabCouleurs.length;i++){	
	var tabAnglesTemp=new Array();
	tabAnglesTemp.push((i+1)*ecartSecu+i*largeurTranche);
	tabAnglesTemp.push((i+1)*ecartSecu+(i+1)*largeurTranche-ecartSecu);
	tabAngles.push(tabAnglesTemp);	
}

//fait tourner la roue
function tournerRoue(){
	
	decompte--;
	if(decompte==0){//Si le décompte est à zéro on enclenche le ralentit		
		arret=true;	
	}
	
	if(arret==true && coeffRotation>0){//Diminue le coeffRotation=>roue ralentit, et efface l'effet de flou
		roueFloue._alpha-=100/coeffRotation;
		coeffRotation-=1;
	}else if(arret==true && coeffRotation<=0){//Si la roue est à l'arret on supprime l'intervalle		
		clearInterval(IDInterval);
	}
	
	roue._rotation+=coeffRotation;//On effectue une rotation au clip de la roue en fonction du coeff rotation
	roueFloue._rotation=roue._rotation;//La roue floue suit la roue normale	
	updateAfterEvent();//Pas forcément nécessaire
}

//Lance la roue
function lancerRoue(){	
	
	//On supprime les clips et l'intervalle s'il s'agit d'un deuxième lancé
	roue.removeMovieClip();
	roueFloue.removeMovieClip();
	fleche.removeMovieClip();
	clearInterval(IDInterval);
	
	//Soit le numéro du lot est aléatoire soit vous le choisissez
	numLot=Math.floor(Math.random()*tabCouleurs.length);
	//numLot=2;
	_root.nomLot=tabCouleurs[numLot];
	
	//on place nos clips sur la scène
	attachMovie("roue","roue",2);
	roue._x=280;
	roue._y=75;
	attachMovie("roueFloue","roueFloue",3);
	roueFloue._x=roue._x;
	roueFloue._y=roue._y;
	roueFloue._alpha=100;	
	attachMovie("fleche","fleche",4);
	fleche._x=roue._x;
	fleche._y=roue._y-(roue._height/2)-fleche._height/2;
	
	coeffRotation=360/(tabCouleurs.length);//L'angle de rotation au début est de 360°/nbCouleurs
	arret=false;//La roue est en marche	
	decompte=nbTours*tabCouleurs.length;//Un décompte qui permet d'effectuer un certain nombre de tours avant de ralentir
	
	//Roration de départ en fonction de la case choisie
	roue._rotation=Math.floor(Math.random()*(tabAngles[numLot][1]-tabAngles[numLot][0])+tabAngles[numLot][0])+3*coeffRotation;
		
	IDInterval=setInterval(tournerRoue,30);//on appelle la méthode toutes les 30ms
}
lancerRoue();//on lance la roue au début

//Bouton de relance
relancer.onPress = function(){
	lancerRoue();
}
stop();

Conclusion :


Créer trois clips : "roue", "roueFloue" et "fleche" et faites les liaisons.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ppp69
Messages postés
1
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
10 avril 2010

comment fait on pour installer cette roue ?

Merci d'avance
bardine
Messages postés
2
Date d'inscription
lundi 14 novembre 2005
Statut
Membre
Dernière intervention
26 août 2009

Merci !

... mais mon profil à moi c'est graphiste et pas développeur ;-)
cs_bali_balo
Messages postés
1381
Date d'inscription
samedi 9 octobre 2004
Statut
Membre
Dernière intervention
1 novembre 2010
1
Salut.
Ligne 46 dans le code : "Soit le numéro du lot est aléatoire soit vous le choisissez "
Donc il suffit de donner un id à chaque segment. Ensuite numLot = l'id du segment cliqué.

C'est simple comme tout.

b_b
bardine
Messages postés
2
Date d'inscription
lundi 14 novembre 2005
Statut
Membre
Dernière intervention
26 août 2009

Je trouve cette roue parfaite. Cependant (;-) j'avais plutôt besoin d'une roue ou on peut choisir le camembert d'arrivée en cliquant dessus... c'est un peu bizarre je vous l'accorde, ce n'est pas vraiment de la fortune.

si vous savez comment faire...
... Merci d'avance.

B.
libertyblood
Messages postés
25
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
8 août 2006

Ouais ouais je sais :) mais bon avec paint jpe pas faire de flou ^^ J'essaierai la prochaine fois de faire des trucs plus regardable :p Mais mon profil à moi c'est développeur pas graphiste :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.