Il procedimento più pulito per fare quello che chiedi è far dispacciare a menù un evento, che intercetti dalla main e all'handler chiami la funzione update.
In alternativa dovresti fare la funzione update nella main pubblica, e poi ricavarti una referenza della main dal menù (var main:MovieClip = this.parent as MovieClip) e chiamare main.update(); ma è un modo osceno.
Ti faccio l'esempio del primo metodo che ti dicevo io.
Document Class
Codice PHP:
package
{
import flash.display.*;
import flash.events.*;
public class Main extends MovieClip
{
private var menu:MyMenu;
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
if (e) removeEventListener(Event.ADDED_TO_STAGE, init);
menu = new MyMenu();
addChild(menu);
menu.addEventListener(MyMenu.UPDATE, update);
}
private function update(e:Event = null):void
{
trace("update!");
}
}
}
Classe associata al menu
Codice PHP:
package
{
import flash.display.*;
import flash.events.*;
public class MyMenu extends MovieClip
{
public static const UPDATE:String = "update";
public function MyMenu()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
bottone.addEventListener(MouseEvent.CLICK, onClick);
}
// al click del bottone la classe dispaccia l'evento.
private function onClick(e:MouseEvent):void
{
dispatchEvent(new Event(MyMenu.UPDATE));
}
}
}
Praticamente quando viene cliccato il bottone (nome istanza bottone) dentro a menù, menù dispaccia l'evento che viene intercettato nella main, e viene così chiamata la funzione update (alla quale dai il null di default come parametro, così la puoi chiamare anche in maniera diretta nel corso della tua applicazione).