Sì, la sintassi di AS3 è cambiata parecchio rispetto alle vecchie versioni e non è più possibile inserire le azioni direttamente sui pulsanti.
Non è necessario inserire una funzione per ogni pulsante, si può creare una routine tale da sfruttare una sola funzione per tanti pulsanti (sempre meglio usare i movieclip al posto dei pulsanti, l'uso semplifica molto questo tipo di situazioni).
Poniamo ad esempio di avere cinque o sei movieclip che devono spostare la timeline principale a determinati frame, il codice semplificato per farlo assomiglia a questo:
Codice PHP:
pulsante1.rootFrame = 10;
pulsante2.rootFrame = 20;
pulsante3.rootFrame = 30;
pulsante4.rootFrame = 40;
pulsante5.rootFrame = 50;
pulsante6.rootFrame = 60;
pulsante1.addEventListener(MouseEvent.CLICK, clickHandler);
pulsante2.addEventListener(MouseEvent.CLICK, clickHandler);
pulsante3.addEventListener(MouseEvent.CLICK, clickHandler);
pulsante4.addEventListener(MouseEvent.CLICK, clickHandler);
pulsante5.addEventListener(MouseEvent.CLICK, clickHandler);
pulsante6.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler (evt:MouseEvent):void {
this.gotoAndPlay(evt.target.rootFrame);
}
Addirittura in una situazione così continuativa, potresti sfruttare un ciclo per semplificare ancora il codice (con un array, sarebbe la cosa migliore):
Codice PHP:
var pulsanti:Array = [pulsante1, pulsante2, pulsante3, pulsante4, pulsante5, pulsante6];
pulsanti.forEach (callback);
function callback (element:*, index:uint, array:Array):void {
element.rootFrame = index*10;
element.addEventListener(MouseEvent.CLICK, clickHandler);
}
function clickHandler (evt:MouseEvent):void {
this.gotoAndPlay(evt.target.rootFrame);
}