Ciao !
Vi è capitato di
assegnare un evento del mouse ad una MovieClip ( tipo MouseEvent.MOUSE_DOWN ) e lei si comporta come niente fosse ?
Si comporta come se quell' evento non lo avesse mai associato...
Di sicuro avete un' altra
MovieClip sopra di essa che blocca gli eventi del mouse.
Se vi è capitato e non avete ancora trovato una soluzione, questo tutorial è la soluzione.
Il ' trucco ' è tutto nella proprietà mouseEnbled della classe InteractiveObject ( utilizzabile anche dalla MovieClip in quanto subclass di InteractiveObject ).
Mettiamo caso che ho una MovieClip che chiamo clip_mc e in un livello superiore ho un' altra MovieClip con alpha 50 che copre clip_mc.
In questo caso tutti gli eventi del mouse associati a clip_mc vengono annullati dalla posizione della MovieClip superiore.
Per risolvere basta dire alla MovieClip superiore .mouseEnabled=false;
Vediamo un esempio concreto...
Creo una MovieClip, gli assegno nome istanza clip_mc e gli assegno un evento MOUSE_DOWN in modo che ogni volta che viene cliccata un campo di testo mi scrive 'ok ':
Code:
clip_mc.mouseChildren=false;
clip_mc.buttonMode=true;
clip_mc.addEventListener(MouseEvent.MOUSE_DOWN,go);
function go(evt:MouseEvent):void
{
debug_txt.appendText('ok'+'\n');
}
Fin quì nulla di strano, tutto funziona correttamente, infatti se clicco il campo di testo fa il suo dovere in quanto l' evento è stato intercettato.
Adesso inserisco un' altra MovieClip con nome istanza over_mc in un livello superiore a clip_mc mantenendo lo stesso evento su clip_mc, quindi lo stesso codice
Ecco che clip_mc non intercetta più l' evento MOUSE_DOWN, infatti se provo a cliccare non succede nulla...anzi... addirittura non si vede neanche più la manina del mouse quando passo sopra a clip_mc.
Qeusto è causato dal fatto che over_mc ha una proprietà che si chiama mouseEnabled che in questo momento ha valore true e quindi copre gli eventi del mouse su clip_mc.
Per risolvere questo problema quindi basta impostare mouseEnabled false di over_mc, in questo modo:
Code:
over_mc.mouseEnabled=false;
clip_mc.mouseChildren=false;
clip_mc.buttonMode=true;
clip_mc.addEventListener(MouseEvent.MOUSE_DOWN,go);
function go(evt:MouseEvent):void
{
debug_txt.appendText('ok'+'\n');
}
Infatti se ora clicco su clip_mc tuto è tornato a funzionare correttamente.
Alla prossima & stay tuned !