Probleme etat rollover

vilkoyote Messages postés 2 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009 - 19 juil. 2009 à 00:48
vilkoyote Messages postés 2 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009 - 19 juil. 2009 à 06:52
Bonjour a tous amis flash codeurs.
Voila j essaye de mettre en place un petit flash contenant une map de la suisse interactive.
Je ne débute que depuis quelques jours en action script et je suis déjà bloque sur un bug énervant.
Je code cette map en AS3.

voici le fichier actuel swf : http://www.terafiles.net/v-59518.html
et le fichier fla : http://www.terafiles.net/v-59519.html
le ficher xml (ne contient que deux cantons pour tester): http://www.terafiles.net/v-59520.html

Le but final est :

-1- avoir un effet de relief et de changements de couleurs sur chaque canton en roll over
et avoir des bloques textes en dynamique propres a chaque canton issue d'un fichier xml.

-2- avoir lors du clique utilisateur une URL propre a chaque canton issue du même fichier xml.

(je sais le projet est plutôt ambitieux pour un débutant mais je préfère attaquer dur dés le début)

chaque canton a été vectorise et convertis en movieclip avec un nom d'instance de type XX_map
exp : VALAIS indicatif VS -----> vs_map

voici le code en as3 pour jouer les différents clips propres a chaque canton:

//traitement des instances de map en tant que boutons

vs_map.buttonMode = true;
ge_map.buttonMode = true;
ts_map.buttonMode = true;
gr_map.buttonMode = true;
vd_map.buttonMode = true;
be_map.buttonMode = true;
ur_map.buttonMode = true;
fr_map.buttonMode = true;
ne_map.buttonMode = true;
ju_map.buttonMode = true;
so_map.buttonMode = true;
bl_map.buttonMode = true;
bs_map.buttonMode = true;
ag_map.buttonMode = true;
lu_map.buttonMode = true;
zg_map.buttonMode = true;
ow_map.buttonMode = true;
nw_map.buttonMode = true;
sz_map.buttonMode = true;
zh_map.buttonMode = true;
sh_map.buttonMode = true;
tg_map.buttonMode = true;
ar_map.buttonMode = true;
ai_map.buttonMode = true;
sg_map.buttonMode = true;
gl_map.buttonMode = true;
lac_map.buttonMode = true;

//ajout des événements lies au différents états des boutons

vs_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
vs_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
vs_map.addEventListener(MouseEvent.CLICK, vs_nav);

ge_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ge_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ge_map.addEventListener(MouseEvent.CLICK, ge_nav);

ts_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ts_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ts_map.addEventListener(MouseEvent.CLICK, ts_nav);

gr_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
gr_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
gr_map.addEventListener(MouseEvent.CLICK, gr_nav);

vd_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
vd_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
vd_map.addEventListener(MouseEvent.CLICK, gr_nav);

be_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
be_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
be_map.addEventListener(MouseEvent.CLICK, gr_nav);

ur_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ur_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ur_map.addEventListener(MouseEvent.CLICK, gr_nav);

fr_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
fr_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
fr_map.addEventListener(MouseEvent.CLICK, gr_nav);

ne_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ne_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ne_map.addEventListener(MouseEvent.CLICK, gr_nav);

ju_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ju_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ju_map.addEventListener(MouseEvent.CLICK, gr_nav);

so_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
so_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
so_map.addEventListener(MouseEvent.CLICK, gr_nav);

bl_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
bl_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
bl_map.addEventListener(MouseEvent.CLICK, gr_nav);

bs_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
bs_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
bs_map.addEventListener(MouseEvent.CLICK, gr_nav);

ag_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ag_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ag_map.addEventListener(MouseEvent.CLICK, gr_nav);

lu_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
lu_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
lu_map.addEventListener(MouseEvent.CLICK, gr_nav);

zg_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
zg_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
zg_map.addEventListener(MouseEvent.CLICK, gr_nav);

ow_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ow_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ow_map.addEventListener(MouseEvent.CLICK, gr_nav);

nw_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
nw_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
nw_map.addEventListener(MouseEvent.CLICK, gr_nav);

sz_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
sz_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
sz_map.addEventListener(MouseEvent.CLICK, gr_nav);

zh_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
zh_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
zh_map.addEventListener(MouseEvent.CLICK, gr_nav);

sh_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
sh_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
sh_map.addEventListener(MouseEvent.CLICK, gr_nav);

tg_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
tg_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
tg_map.addEventListener(MouseEvent.CLICK, gr_nav);

ar_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ar_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ar_map.addEventListener(MouseEvent.CLICK, gr_nav);


ai_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
ai_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
ai_map.addEventListener(MouseEvent.CLICK, gr_nav);

sg_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
sg_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
sg_map.addEventListener(MouseEvent.CLICK, gr_nav);

gl_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
gl_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);
gl_map.addEventListener(MouseEvent.CLICK, gr_nav);

lac_map.addEventListener(MouseEvent.ROLL_OVER,onButtonOver);
lac_map.addEventListener(MouseEvent.ROLL_OUT, onButtonOut);


//liaison des etats avec les animations
function onButtonOver(e:MouseEvent):void { e.currentTarget.gotoAndPlay("over"); }
function onButtonOut(e:MouseEvent):void { e.currentTarget.gotoAndPlay("out"); }


//liens urls lies a l etat clik
import flash.events.MouseEvent;
function vs_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ge_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ts_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function gr_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function vd_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function be_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ur_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function fr_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ne_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ju_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function so_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function bl_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function bs_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ag_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function lu_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function zg_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ow_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function nw_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function sz_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function zh_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function sh_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function tg_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ar_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function ai_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function sg_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}
function gl_nav(evt){navigateToURL(new URLRequest("/blank"), "_self");}


voila pour le code actuel.


Donc le premier bug que je recontre et que certain cantons restent en etat "role over" si le curseur se deplace trop rapidement ou sort du flash.

Y aurait il une solution pour palier au probleme
ou je m y prend mal? J'ai besoin de movieclip derriere chaques instances car je veux appliquer des effets de filtres.



J'ai fait des centaines de tutoriaux et le sujet reste toujours nebuleux ...

please help !!!!

merci a tous

1 réponse

vilkoyote Messages postés 2 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009
19 juil. 2009 à 06:52
bon ben apres une bonne nuit blanche j ai résolu le problème en fait j ai modifie mon script de la manière suivante:


vs_map.addEventListener(MouseEvent.MOUSE_OVER, buttonHandler);
vs_map.addEventListener(MouseEvent.MOUSE_OUT, buttonHandler);
vs_map.addEventListener(MouseEvent.CLICK, buttonHandler);

ge_map.addEventListener(MouseEvent.MOUSE_OVER, buttonHandler);
ge_map.addEventListener(MouseEvent.MOUSE_OUT, buttonHandler);
ge_map.addEventListener(MouseEvent.CLICK, buttonHandler);

ti_map.addEventListener(MouseEvent.MOUSE_OVER, buttonHandler);
ti_map.addEventListener(MouseEvent.MOUSE_OUT, buttonHandler);
ti_map.addEventListener(MouseEvent.CLICK, buttonHandler);


etc.....


function buttonHandler(evt:MouseEvent):void {
switch (evt.type) {
case "mouseOver" : evt.currentTarget.gotoAndPlay("over"); break;
case "mouseOut" : evt.currentTarget.gotoAndPlay("out"); break;
case "click" : navigateToURL(new URLRequest("/blank"), "_self"); break;
}
}

merci a un post de pegase31 pour cette soluce.
bon prochaine étape l'intégration du xml (ouille ouille j ai déjà une migraine ....)
0
Rejoignez-nous