Prvo, dobrodošao na forum! Sa tim problemom se mnogi suočavaju, a ja ću pokušati što jednostavnije da tebi (i ostalima koji imaju isto pitanje) pojasnim kako je ovako nešto moguće postići.
Na sceni se nalazi animirani klip (
MovieClip) unutar koga se nalazi taster čijim se pritiskom prikazuje drugi kadar (
frame) na glavnoj vremenskoj liniji (
MainTimeline). Kako znamo da je glavna vremenska linija roditelj (
parent) animiranom klipu bilo bi logično zaključiti da iz tog animiranog klipa možemo pristupiti drugom kadru glavne vremenske linije korišćenjem
parent ključne reči, na sledeći način:
Code:
parent.nextFrame();
Međutim, ukoliko testiramo flash film i pritisnemo taster koji se nalazi u tom animiranom klipu dobićemo sledeću grešku:
Code:
1061: Call to a possibly undefined method nextFrame through a reference with static type flash.display:DisplayObjectContainer.
U čemu je problem? Pa, iako mi znamo da je glavna vremenska linija sama po sebi animirani klip, kompajler to ne zna i moramo mu eksplicitno navesti korišćenjem konverzije (
casting):
Code:
MovieClip(parent).nextFrame();
Ili na drugi način:
Code:
(parent as MovieClip).nextFrame();
Da li je moguće isti rezultat postići bez korišćenja konverzije i prikazivanja grešaka? Da, ukoliko se isključi
Strict mode (File -> Publish Settings -> Flash -> ActionScript Settings -> Errors: Strict Mode). U ovom slučaju prva linija koda će biti ispravna i neće se prikazati greška, međutim ako bilo kada kasnije ponovo uključimo
Strict mode kod neće funkcionisati i zbog toga je ipak bolje koristiti konverziju.
Primer ove konverzije možeš preuzeti iz priloga.