a livello teorico hai perfettamente ragione ma basta analizzare il codice di qualche classe tween, tweenmax, caurina ecc.. per rendersi conto di quanto siano comode le funzioni pubbliche.

Fra l'altro in questo esempio la main la ricavi certamente da da un this.parent ma se tu dovessi passare un bottone istanziato nella main come lo ricavi? è molto più semplice passarlo per poi poterlo utilizzare.

In vecchio post che nn trovo spiegavo ad un utente come utilizzare il dispatch di eventi personalizzati, sistema che io uso abbondantemente con le classi loader per caricare xml o file esterni a catena. Ma chi usa flash da tempo come me (versione 3) sa perfettamente che il puro OOP a volte va scavalcato utilizzando sistemi meno formali ma più funzionali.

poi ognuno si gestisce a suo modo e quasto è chiaro