Menu défilant

Soyez le premier à donner votre avis sur cette source.

Vue 9 804 fois - Téléchargée 1 178 fois

Description

Un menu défilant en boucle par la droite ou la gauche.
Choix du nombre de clips facilement paramètrable.

Source / Exemple :


///////////////////
// LES VARIABLES //
///////////////////
var centreClip = 4;// le clip 4 est au centre en début
var nbClip = 15;// ici le nombre de clip du menu
var repereX = 0;
var profClip:Number;
var choixGroupe:MovieClip = mini4_mc;
//dans ce tableau les noms des clips a exporter
var groupe:Array = new Array("clip1","clip2","clip3","clip4","clip5","clip6",
							 "clip7","clip8","clip9","clip10","clip11",
							 "clip12","clip13","clip14","clip15");
//dans ce tableau, le texte qui s'affiche quand on survole le clip
var nomGroupe:Array = new Array("CLIP 1","CLIP 2","CLIP 3","CLIP 4","CLIP 5","CLIP 6",
								"CLIP 7","CLIP 8","CLIP 9","CLIP 10","CLIP 11",
								"CLIP 12","CLIP 13","CLIP 14","CLIP 15");
//
_root.attachMovie(groupe[0],"mini"+0+"_mc",1, {_x:-25, _y:80});
_root.attachMovie(groupe[1],"mini"+1+"_mc",2, {_x:75, _y:80});
_root.attachMovie(groupe[2],"mini"+2+"_mc",3, {_x:175, _y:80});
_root.attachMovie(groupe[3],"mini"+3+"_mc",4, {_x:275, _y:80});
_root.attachMovie(groupe[4],"mini"+4+"_mc",5, {_x:375, _y:80});
_root.attachMovie(groupe[5],"mini"+5+"_mc",6, {_x:475, _y:80});
_root.attachMovie(groupe[6],"mini"+6+"_mc",7, {_x:575, _y:80});
_root.attachMovie(groupe[7],"mini"+7+"_mc",8, {_x:675, _y:80});
_root.attachMovie(groupe[8],"mini"+8+"_mc",9, {_x:775, _y:80});
/////////////////////////////
// FONCTION MENU DEROULANT //
/////////////////////////////
_root.onEnterFrame=function(){
	loupe();
	if(droiteZone_mc.hitTest(_xmouse, _ymouse, true)){
		for(i=-4;i<6;i++){
			if((centreClip+i)<0){
				_root["mini"+(nbClip+centreClip+i)+"_mc"]._x -= 10;
			}else if((centreClip+i)>(nbClip-1)){
				_root["mini"+(Math.abs(nbClip-(centreClip+i)))+"_mc"]._x -= 10;
			}else{
				_root["mini"+(centreClip+i)+"_mc"]._x -= 10;
			}
		}
		repereX -= 10;
		if(repereX == -100){
			repereX = 0;
			if((centreClip-4)<0){
				profClip = _root["mini"+(nbClip+(centreClip-4))+"_mc"].getDepth();
				removeMovieClip("mini"+(nbClip+(centreClip-4))+"_mc");
				_root.attachMovie(groupe[centreClip+5],"mini"+(centreClip+5)+"_mc", profClip, {_x:775, _y:80});
			}else if((centreClip+5)>(nbClip-1)){
				profClip = _root["mini"+(centreClip-4)+"_mc"].getDepth();
				removeMovieClip("mini"+(centreClip-4)+"_mc");
				_root.attachMovie(groupe[(Math.abs(nbClip-(centreClip+5)))],"mini"+(Math.abs(nbClip-(centreClip+5)))+"_mc", profClip, {_x:775, _y:80});
			}else{
				profClip = _root["mini"+(centreClip-4)+"_mc"].getDepth();
				removeMovieClip("mini"+(centreClip-4)+"_mc");
				_root.attachMovie(groupe[centreClip+5],"mini"+(centreClip+5)+"_mc", profClip, {_x:775, _y:80});
			}
			centreClip++;
			if(centreClip == nbClip){
				centreClip = 0;
			}
		}
	}
	if(gaucheZone_mc.hitTest(_xmouse, _ymouse, true)){
		for(i=-5;i<5;i++){
			if((centreClip+i)<0){
				_root["mini"+(nbClip+centreClip+i)+"_mc"]._x += 10;
			}else if((centreClip+i)>(nbClip-1)){
				_root["mini"+(Math.abs(nbClip-(centreClip+i)))+"_mc"]._x += 10;
			}else{
				_root["mini"+(centreClip+i)+"_mc"]._x += 10;
			}
		}
		repereX += 10;
		if(repereX == 100){
			repereX = 0;
			if((centreClip-5)<0){
				profClip = _root["mini"+(centreClip+4)+"_mc"].getDepth();
				removeMovieClip("mini"+(centreClip+4)+"_mc");
				_root.attachMovie(groupe[(nbClip+(centreClip-5))],"mini"+(nbClip+(centreClip-5))+"_mc", profClip, {_x:-25, _y:80});
			}else if((centreClip+4)>(nbClip-1)){
				profClip = _root["mini"+(Math.abs(nbClip-(centreClip+4)))+"_mc"].getDepth();
				removeMovieClip("mini"+(Math.abs(nbClip-(centreClip+4)))+"_mc");
				_root.attachMovie(groupe[(centreClip-5)],"mini"+(centreClip-5)+"_mc", profClip, {_x:-25, _y:80});
			}else{
				profClip = _root["mini"+(centreClip+4)+"_mc"].getDepth();
				removeMovieClip("mini"+(centreClip+4)+"_mc");
				_root.attachMovie(groupe[centreClip-5],"mini"+(centreClip-5)+"_mc", profClip, {_x:-25, _y:80});
			}
			centreClip--;
			if(centreClip == -1){
				centreClip = (nbClip-1);
			}
		}
	}
}
//////////////////////////////////////
// FONCTION LOUPE DU MENU DEROULANT //
//////////////////////////////////////
loupe = function(){
	for(i=0;i<nbClip;i++){
		if(_root["mini"+i+"_mc"].hitTest(_xmouse, _ymouse, true)){
			_root["mini"+i+"_mc"]._xscale = 130;
			_root["mini"+i+"_mc"]._yscale = 130;
			groupe_txt.text = nomGroupe[i];
			choixGroupe = _root["mini"+i+"_mc"];
			choixGroupe.onPress = function(){
				trace("j'ai choisi "+choixGroupe);
			}
		}else{
			_root["mini"+i+"_mc"]._xscale = 100;
			_root["mini"+i+"_mc"]._yscale = 100;
		}
	}
}

Conclusion :


Voir la source en application
http://www.lemin.fr/tokyoband.html

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
10 juin 2011

Bonjour.
Effectivement, je l'ais faite un peu vite et surtout je n'avais pas trouvé la source qu'indique TOP30, qui est vraiment bien.
Autant pour moi.
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010

Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Bonjour,
autant ta première source, qui date déja de quleque temps, je la trouve très interessante, autant celle-ci est trop rapidement abordée.

Voici quelques éléments à améliorer:
1> tu utilise des Array a la place de Vector.<String>
2> ton premier array est compétement inutile
3> tu devrais utiliser une boucle pour tes clips, au lien de dupliquer les méthodes
4> ta source n'est pas du tout dynamique, elle gagnerais sans commune mesure a se baser sur un xml
5> ton choix d'utiliser des hitests pour le defilement est discutable
6> et surtout tout ton code dans l'enterframe, est loin d'etre optimisé:
--->code redondant (pas POA du tout)
--->choisir de faire des removeChilds et des addChilds, n'est peut etre pas la méthode la moins gourmande en temps et ressource.

Bref, il y a beaucoup de travail pour que ta source soit honnetement au niveau de nombreuse autre traitant du meme sujet

Cordialement

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.

Du même auteur (m1le)