This is a discussion on Trucco del giorno - MovieClip.mouseChildren within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Eccoci al trucco del giorno.
Dopo aver visto la differenza tra target e currentTarget , dopo aver analizzato la proprietà ...
Qusta proprietà posiamo utilizzarla con MovieClip, Sprite, Loader e Stage.
Perchè ? Perchè la classe DisplayObjectContainer è superClass di Loader, Sprite e Stage , quindi significa che le 3 classi citate erditano metodi e proprietà da DisplayObjectContainer. La MovieClip a sua volta invece è subclass della Sprite, quindi eredita i suoi metodi.
Perchè parlare di mouseChildren?
Semplice: può risolvervi un bel problema.
Mettiamo caso che abbiamo una MovieClip con all' interno diversi oggetti ( esempio un campo di testo ) e che vogliamo fare interagire il Mouse con questa MovieClip.
Aggiungiamo i listeners necessari in ascolto e quando proviamo notiamo che il mouse sopra alla MovieClip non diventa ' manina '. Allora andiamo a leggere che esiste una propretà chiamata buttonMode che abiliterà il mouse a diventare ' manina ' ogni qualvolta sarà sopra la MovieClip. ma non è ancora finita perchè se provassimo in questo momento avremmo un pccolo problema e cioè che il mouse diventa ' manina ' solo se non sta sopra al campo di testo inserito nella MovieClip.
Ecco che bisogna intervenire con la proprietà mouseChildren, in questo modo...*
Creo un FLA che salvo con nome ' main.fla '.
Al suo interno creo una MovieClip sullo Stage che chiamo ' clip_mc ' di qualsiasi forma.
All' interno di clip_mc creo un campo di testo con qualsiasi testo.
Ora supponiamo che io volessi applicare un evento di MOUE_OVER su clip_mc, farei in questo modo:
Code:
clip_mc.buttonMode=true;
clip_mc.addEventListener(MouseEvent.MOUSE_OVER,go);
function go(evt:MouseEvent):void
{
// codice da eseguire
}
e otterrei questo risultato:
andando sulla clip col mouse, notiamo che fino a quando non siamo sul campo di testo il mouse mostra la manina ma e andiamo sul campo la manina scompare.
Questa cosa non è affatto bella.
Per sviare a questo problema, entra in gioco la proprietà mouseChildren in questo modo:
Code:
clip_mc.buttonMode=true;
clip_mc.mouseChildren=false;
clip_mc.addEventListener(MouseEvent.MOUSE_OVER,go);
function go(evt:MouseEvent):void
{
// codice da eseguire
}