Ciao
L'errore che riscontri si verifica quando nel codice si fa riferimento a una proprietà o un metodo che non è presente nel fotogramma con il codice e presumo che stai programmando in ActionScript 3.0.
In questo caso, evita per quanto è possibile di sparpagliare codice sulle timeline dei MovieClip e cerca di mettere tutto il codice nel primo fotogramma del filmato, compresi gli oggetti a cui fa riferimento.
Se uno o più di questi oggetti non vuoi che sia visibile da subito il metodo nomeOggetto.visible = false; per poi impostarlo su true quando ti serve, va benissimo, oppure puoi posizionarlo al di fuori dell'area visibile dello stage e dargli una nuova posizione x e y da codice, quando ti serve ma è importante che in ogni caso, l'oggetto sia presente con il suo <Nome istanza> con cui da codice fai riferimento.
In pratica nel tuo progetto dovresti avere nel primo fotogramma della timeline principale, 2 MovieClip costituiti da una loro timeline con un'immagine in ogni fotogramma e uno stop(); sul primo fotogramma.
Li posizioni sullo stage con il loro nome istanza ad esempio: 'clip1' e 'clip2'.
I pulsanti a tendina dovrebbero essere istanze di simboli MovieClip con altri MovieClip annidati al loro interno.
Dal codice AS3 fai riferimento ad ogni singolo clip annidato con la classica sintassi del punto, ad esempio:
Il tuo MovieClip ha <Nome istanza> : menu1.
I MovieClip annidati al suo interno hanno <Nome istanza> : subMenu1, subMenu2, subMenu3 ecc...
Per fare riferimento a uno qualsiasi di questi subMenu lo richiami con:
Codice PHP:
menu1.subMenu1.addEventListener(MouseEvent.CLICK, cambiaSchermataClip1);
function cambiaSchermataClip1(evento:MouseEvent):void
{
clip1.gotoAndStop(2);
}
Ovviamente questo è solo un esempio di come da un clip annidato puoi interagire con un altro clip presente sullo stage.
E' importante sapere che lo stage 'vede' e può controllare facilmente tutti gli oggetti presenti al suo interno con una gerarchia del tipo:
padre > figlio > figlioDelFiglio ecc. (padre.figlio.figlioDelFiglio .... )
Un pò più complesso fare il percorso inverso ovvero dal 'figlio' risalire al 'padre' e per esempio controllare la timeline principale.
Per fare questo devi fare in modo che il 'padre' sia considerato come un MovieClip annidato e fare il percorso inverso utilizzando la proprietà 'parent' che ti permette di indietreggiare di 1 livello ad esempio:
Sei nel MovieClip 'figlio' posizionato sullo stage principale e dal 'figlio' vuoi inviare un comando alla timeline principale.
Nella timeline del 'figlio' inserisci il codice:
Codice PHP:
var timelinePrincipale:MovieClip = this.parent as MovieClip
timelinePrincipale.gotoAndStop(30);
... e sposti la testina di riproduzione del filmato principale sul fotogramma n.30.
Comunque ti ripeto, questo metodo funziona ma è sempre meglio e più semplice controllare tutto dalla timeline principale come ti ho suggerito nel metodo precedente.
Ciao e Buon proseguimento