GenerateMenu = function(container, menuname, x, y, depth, xml_element) {
// Initialisierung
var akt_element;
var akt_eintrag;
var akt_menu = container.createEmptyMovieClip(menuname, depth);
// Sämtliche Einträge erfassen
for (var i=0; i<xml_element.childNodes.length; i++) {
// MovieClip für jeden Eintrag erzeugen
akt_eintrag = akt_menu.attachMovie("menueintrag","eintrag"+i+"_mc", i);
akt_eintrag._x = x;
akt_eintrag._y = y + i*akt_eintrag._height;
akt_eintrag.trackAsMenu = true;
// Menüeintrags Eigenschaften anhand der XML Zuweisung festlegen
akt_element = xml_element.childNodes[i];
akt_eintrag.aktion = akt_element.attributes.aktion;
akt_eintrag.variables = akt_element.attributes.variables;
akt_eintrag.menuname.text = akt_element.attributes.name;
// Untermenü Eintrag Verhalten für Rollover Ereignis festlegen
if (xml_element.childNodes[i].nodeName == "menu"){
// Untermenü Öffnen (durch Rekursiven Aufruf)
akt_eintrag.xml_element = akt_element;
akt_eintrag.onRollOver = akt_eintrag.onDragOver = function(){
clearInterval(timeout_iv);
var x = this._x + this._width;
var y = this._y;
GenerateMenu(akt_menu, "submenu_mc", x, y, 1000, this.xml_element);
// Drüber Zustand (Färben)
var col = new Color(this.hintergrund);
col.setTransform({ra:50,rb:70,ga:50,gb:70,ba:50,bb:70});
};
}else{ // Elementname "eintrag"
akt_eintrag.pfeil._visible = false;
// Untermenü Schliessen
akt_eintrag.onRollOver = akt_eintrag.onDragOver = function(){
clearInterval(timeout_iv);
akt_menu.submenu_mc.removeMovieClip();
// Drüber Zustand (Färben)
var col = new Color(this.hintergrund);
col.setTransform({ra:50,rb:70,ga:50,gb:70,ba:50,bb:70});
};
}
akt_eintrag.onRollOut = akt_eintrag.onDragOut = function(){
// Ursprüngliche Einfärbung wiederherstellen
var col = new Color(this.hintergrund);
col.setTransform({ra:100,rb:0,ga:100,gb:0,ba:100,bb:0});
// TimeOut (Aktiv oder Inaktiv) (ComboBox und Numericstepper)
if (timeout_cb.value) TimeOut (this, dauer_stepper.value*1000);
};
// Mögliche Aktionen des jeweiligen Eintrags auslösen
akt_eintrag.onRelease = function(){
Aktionen[this.aktion](this.variables);
CloseSubmenus();
};
}
};
// Hauptmenü erzeugen
CreateMainMenu = function(x, y, depth, menu_xml){
// Menüliste erzeugen
GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild);
// Untermenüs lediglich dann schliessen, wenn diese während
// eines MouseUp Ereignisses sichtbar waren
mainmenu_mc.onMouseUp = function(){
if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true)){
CloseSubmenus();
}
};
};
// Sämtliche Untermenüs entfernen, falls welche im Hauptmenü existieren
CloseSubmenus = function(){
clearInterval(timeout_iv);
mainmenu_mc.submenu_mc.removeMovieClip();
};
// Setzt ein Timeout um die Untermenüs nach einer festgelegten
// Zeit wieder zu schließen.
TimeOut = function (ziel, dauer) {
function setzeOut() {
if (!ziel.hitTest()) {
CloseSubmenus();
clearInterval (timeout_iv);
}
}
this.timeout_iv = setInterval(setzeOut, dauer);
}
// Objekt verwaltet die Aktionen die den jeweiligen Einträgen
// innerhalb der XML-Struktur zugewiesen wurden.
Aktionen = new Object();
Aktionen.message = function(msg){
ausgabe_txt.text = msg;
};
Aktionen.gotoURL = function(urlVar){
getURL(urlVar, "_blank");
};
Aktionen.newMenu = function(menuxml){
menu_xml.load(menuxml);
};
// XML-Laden und anschliessend Hauptmenü ausführen
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(status){
if (status){
CreateMainMenu(-30, 350, 0, this);
ausgabe_txt.text = "Daten geladen...";
}else{
ausgabe_txt.text = "Fehler: Daten konnten nicht geladen werden!";
}
};
// Erstes Menü laden
menu_xml.load("menu1.xml");