sto cercando di chiarimrmi le idee una volta per tutte...

mi sono letto le varie documentazioni di onClipEvent, this, function e function.call ma ancora ho qualche dubbio e la speranza è trovare qui qualcuno che mi illumini con un po' della sua conoscenza

la cosa che nn mi torna è questa:

definisco una funzione nella root:
codice:
function foo(){
	trace(this)
	d = 20;
}
- se la chiamo da root il risultato è ovvio: "_level0" con d creata nella root

- se creo un mc e gli assegno:
codice:
onClipEvent (load) {
	_root.foo();
}
il risultato è lo stesso e ok...

- se invece assegno da root:
codice:
mymc.onLoad = foo;
il trace mi dice "_level0.mymc" e io, ingenuo, mi aspetto che la variabile d sia in _level0.mymc invece è in root:

perchè?

mi chiedo:
che differenza c'è tra usare OnClipEvent oppure assegnare direttamente al gestore di evento una funzione?

l'errore che commettevo era pensare che scrivere:
codice:
mymc.onLoad = foo;
fosse uguale a scrivere in mymc:
codice:
onClipEvent (load) {
	trace(this)
	d = 20;
}
posso ottenere lo stesso risultato senza riempire il mio codice di this?

forse ho solo bisogno di chiarirmi cosa accade quando faccio un assegnazione del genere nuovafunzione = funzione...

avete qualche buon testo di cui consigliarmi la lettura?

grazie per la pazienza e scusate per la marea di domande