Transformer un movieClip en boutton

cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009 - 14 mars 2005 à 14:33
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009 - 11 avril 2005 à 09:30
Bonjour,

Je souhaite créer à la volée des movieClip cliquables, en d'autre terme des buttons.

Il s'agit de charger une liste de langue dynamiquement dans un fichier XML (ca c fait) puis de construire une barre contenant tout les drapeux des langues disponibles, voici le code pour cette partie :

for(j= 0 ; j<_global.VALID_LANGUAGES.length ; j++)
{

my_mc.createEmptyMovieClip('mc_flag_'+j,j+10);
// chargement de l'image JPG
var nom='flag/'+_global.VALID_LANGUAGES[j][0]+'.jpg';
my_mc['mc_flag_'+j].loadMovie(nom);
//// maintenant on transforme le clip en bouton:
Object.registerClass(my_mc['mc_flag_'+j], Button);
my_mc['mc_flag_'+j].enabled =true;
my_mc['mc_flag_'+j].useHandCursor = true;
my_mc['mc_flag_'+j]._alpha=50;
//evenement associe...
my_mc['mc_flag_'+j].mouseOver = function() { my_mc['mc_flag_'+j]._alpha=100; }
my_mc['mc_flag_'+j].mouseOut = function() { my_mc['mc_flag_'+j]._alpha=50; }
my_mc['mc_flag_'+j].onRelease = function() { trace('Hit on '); } //+_global.VALID_LANGUAGES[j][0]); }

// positionnement
my_mc['mc_flag_'+j]._x=40+j*35;
my_mc['mc_flag_'+j]._y=40;
}

En rouge j'ai mis la ligne de code qui me semblait être la solution pour convertir à la volée un MC en button, afin de pouvoir associer des évenements mouseOver, mouseOut et onRelease....

MAis pour l'instant aucun évènement ne fonctionne.

L'affichage des drapeux et leur positionnement est correct.

Merci de m'aider...

8 réponses

John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
14 mars 2005 à 15:56
Pqoi tu tiens a convertir tes clips en bouton ? A mon avis tu te casses
la tête pour rien parce que il suffit de faire un clip contenant un
bouton et de dupliquer ce clip.
0
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
14 mars 2005 à 16:02
Heu...

La je vois pas trop ta solution.
CAr chaque bouton à une autre image (drapeau d'un pays)...
0
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
14 mars 2005 à 16:09
Ben dans ton bouton tu mets un clip destiné à recevoir l'image.
0
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
14 mars 2005 à 16:18
Donc si j'ai bien compris je garde ma boucle sur mon tableau de lang

et poiur chaqune d'entre elle je fait

duplicate... (monBouton)
monButton.onrelease = function() { ... }
monButton.createEmtyMovieClip('toto',...)
monButton.toto.loadMovie('url');

C'est cà l'idée?

Merci de te pencher sur la question.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
John_Doe_88 Messages postés 606 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 13 décembre 2006
14 mars 2005 à 16:29
Oui tres grossierement c ca. Juste :

-> perso je prefere attachMovie a duplicateMovieClip, mais bon c comme tu veux.

-> tu as un clip qui contient un bouton qui contient un clip, donc attention au ciblage

-> tu peux creer ton clip toto en statique
0
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
14 mars 2005 à 17:08
C'est bon ca fonctionne....
(un nouveau clip colle au boutton instancie)

Merci à toi et aussi à Orphy sur le chat ...
0
cyberval Messages postés 4 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 9 décembre 2005
8 avril 2005 à 13:31
Salut, alors voila comme tu as l'air davoir résolu le probléme ben je voulais savoir si il etais possible que tu m'envoies le code correspondant car moi ji arrive pas.... en fait ce que je voudrais c'est le code dans la boucle for correspondant aux étapes suivantes :
--> duplicate... (monBouton)
--> monButton.onrelease = function() { ... }
--> monButton.createEmtyMovieClip('toto',...)
--> monButton.toto.loadMovie('url');





Merci beaucoup !!
0
cs_MaX3315 Messages postés 170 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 11 mai 2009
11 avril 2005 à 09:30
Bonjour,

voici ce que j'ai bricolé au final, c'est peut être pas ce qu'il y a d'ideal mais ca fonctionne donc voilà :

--------------------------------------------------------------
for(j=0 ; j<_global.VALID_LANGUAGES.length ; j++)
{
var nom='flag/'+_global.VALID_LANGUAGES[j][0]+'.jpg'; // truc du style '/flag/US.jpg'
my_mc.createEmptyMovieClip('mc_flag_'+j,j+100);


//on creer un rectangle plein d'abord
my_mc['mc_flag_'+j].beginFill(0xff0000,0);
my_mc['mc_flag_'+j].lineStyle(2,0x000000,100);
my_mc['mc_flag_'+j].moveTo(0,0);
my_mc['mc_flag_'+j].lineTo(30,0);
my_mc['mc_flag_'+j].lineTo(30,20);
my_mc['mc_flag_'+j].lineTo(0,20);
my_mc['mc_flag_'+j].lineTo(0,0);
my_mc['mc_flag_'+j].codeLang=_global.VALID_LANGUAGES[j][0];
//on charge le drapeu


//on associe a ce rectangle plein un nouveau clip contenant cette fois l'image
my_mc['mc_flag_'+j].createEmptyMovieClip('mc_flag_img_'+j,this.j+50);
my_mc['mc_flag_'+j]['mc_flag_img_'+j].loadMovie(nom);


//// maintenant on transforme le clip en bouton:
//evenement associe...
if(_global.CURRENT_LANGUAGE==_global.VALID_LANGUAGES[j][0])
{
my_mc['mc_flag_'+j]._alpha=100;
} else {
my_mc['mc_flag_'+j]._alpha=50;
}
//gestion du ROLL OVER et ROLL OUT
my_mc['mc_flag_'+j].onRollOver = function() { this._alpha=100; }
my_mc['mc_flag_'+j].onRollOut = function() {
this._alpha=50;
if(this.codeLang==_global.CURRENT_LANGUAGE)
{ this._alpha=100; } else { this._alpha=50; }
}
//gestion de l'action
my_mc['mc_flag_'+j].onRelease = function() {
//il s'agit a partir du nom du movie clip qui se termine par mc_flag_<num>
var codeLang=-1
for(kk=0 ; kk<_global.VALID_LANGUAGES.length ; kk++)
{
my_mc['mc_flag_'+kk]._alpha=50;
if((new String(this)).indexOf('mc_flag_'+kk)>0)
{
//trace('Changement de langue vers >> '+_global.VALID_LANGUAGES[kk][0]);
codeLang=_global.VALID_LANGUAGES[kk][0];
}
}
if(codeLang!=-1) { _global.changementDeLangue(codeLang,this); }
else { trace('Error : language not avaible!'); }
}


my_mc['mc_flag_'+j]._x=j*35;
my_mc['mc_flag_'+j]._y=0;
}
--------------------------------------------------------------
NB _global.VALID_LANGUAGES est un tableau à deux dimensions contenant une liste de langue (code international et nom usuel)

Voilà je pense qu'il y a assez de commentaires pour comprendre ce que j'ai bricolé...
0
Rejoignez-nous