Kolko sam ja skapirao, ti imaš Main klasu (da je tako nazovem, recimo) i iz nje si instancirao neki MovieClip koji je NekeKlase. I sad, ti hoćeš da ta NekaKlasa kontroliše ostale MovieClipove koji se nalaze "pored njega" tj. u Main klasi (u root-u stejdža)?
To je generalno najveći problem u AS3, što takav princip rada jednostavno više ne funkcioniše (nažalost) a mnogi vuku naviku takvog rada još iz AS2. Ranije je bilo dovoljno bilo-odakle jednostavno napisati _root.nešto.nešto i to bi radilo ko sat, a sada...
Gle, ako baš hoćeš da radiš na ovaj način, fora kako da dođeš do root-a je sledeća, ti treba da od current objekta (koji je NekeKlase) i kastuješ root tog objekta u "oblik" tvoje Main klase. Tako recimo, ako ti je document klasa zaista klase "Main" onda do root-a dolaziš uz pomoć sledećeg kôda:
var main:Main = Main(this.root);
I onda bi trebalo da možeš da pristupiš ostalim objektima u root-u normalno. Kažem "trebalo bi" zato što meni ovo čas radi - čas ne radi (iz apsolutno nepoznatih razloga) i verovatno je najbolje da ti Main klasa extenduje MovieClip (i uopšte je verovatno najbolje da svuda koristiš MovieClip umesto Sprite) zato što je MovieClip jedn aod retkih
dinamičnih klasa koje ti dozvoljavaju da u njih beležiš custom promenljive "u letu". Npr:
var mc:MovieClip = new MovieClip();
mc.blabla = 5; // ovo može
var mc:Sprite= new Sprite();
mc.blabla = 5; // ovo ne može, izbacuje grešku
Vremenom sam shvatio da se ne isplati boriti se protiv toga, nego jednostavno treba promeniti način rada (jbg) tako da bi ti u stvari trebao da sve akcije definišeš unutar Main klase, a da Main klasa sluša eventove koje bacaju ti child objekti. Npr:
[ child movieClip baci event "obrišiOstaleObjekte" ] -> [ Main listenuje taj event i pokreće funkciju obrisiObjekte() ]
i onda, da mi Main klasa ne bi imala milion redova kôda, onda pravim "menager" klase za određene oblasti u mojoj aplikaciji. Evo upravo radim na virtuelnoj tastaturi koja stoji na ekranu da bi deca mogla da kucaju ćirilicu lakše uz pomoć miša. I onda sam napravio klasu pod nazivom "TastaturaMenager". I kada instanciram tu klasu, ona automatski postavi MovieClip tastature na ekran, inicijalizuje sve dugmiće da slušaju mouseEventove i reguliše prikaz otkucanih slova prilikom kucanja itd. Ta klasa naravno sadrži i public metodu obrišiTastaturu() koju samo pozovem kada mi tastatura više ne treba. Tako isto imam i menager klasu za galeriju slika, za tranziciju prilikom menjanja stranica u aplikaciji, za main meni koji je uvek vidljiv, itd.
www.zeitgeistmovie.com - film koji mora svako da vidi! (free to download)