Sistema de menú con submenus generados dinámicamente (hasta 2 niveles) que tira de pseudoxml. Toda la navegación se realiza a través de la función fNavTo.
Actionscript:
stop();
#include "lmc_tween.as"
secciones_xml = new XML("<secciones><seccion tit='Inicio'></seccion><seccion tit='Nokia E61'><item tit='Presentación'/><item tit='Ficha Técnica'/><item tit='Galería'/><item tit='Zoom'/></seccion><seccion tit='Real Mail Profesional'><item tit='Qué es'/><item tit='Consejos prácticos'/></seccion><seccion tit='Actívalo ahora'><item tit='Registro e instalación'/><item tit='Acceso al servicio'/></seccion></secciones>");
sec_ar = new Array("inicio", "nokiaE61", "realmail", "activalo");
fMenu = function () {
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
var submenu:MovieClip = holder_menu_mc.createEmptyMovieClip("submenu"+i, i);
submenu._y = 16*i;
submenu.miID = i;
var btn_menu:MovieClip = submenu.attachMovie("btn_menu", "btn_menu", 0);
btn_menu.txt.text = secciones_xml.firstChild.childNodes[i].attributes.tit;
btn_menu.miID = i;
btn_menu.miTipo = "m";
btn_menu.onRelease =btn_menu.onReleaseOutside = fReleaseM;
btn_menu.onRollOver = fRollOver;
btn_menu.onRollOut = fRollOut;
}
};
fRollOver = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x999999, .1,"linear");
}
};
fRollOut = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x666666,1,"easeOutQuad");
}
};
fSelectBtn = function (cual) {
selectedSMbtn.colorTo(0x666666, .1, "easeInQuad");
if (cual.miTipo=="m" && cual.miID != selectedMbtn.miID) {
selectedMbtn.colorTo(0x666666, 1, "easeOutQuad");
}
selectedMbtn.enabled = true;
selectedSMbtn.enabled = true;
cual.enabled = false;
cual.colorTo(0xFF0000, .1, "linear");
};
fReleaseM = function () {
fSelectBtn(this);
if (_root.secnow != undefined) {
fCierraSM();
}
fAbreSM(this.miID);
fNavTo(this.miID);
selectedMbtn = this;
};
fReleaseSM = function () {
fSelectBtn(this);
fNavTo(this._parent.miID, this.miID);
selectedSMbtn = this;
};
fNavTo = function (sec, subsec) {
trace(sec_ar[sec]+"/"+subsec);
};
fAbreSM = function (cual) {
var posy:Number = 0;
for (var j = 0; j<secciones_xml.firstChild.childNodes[cual].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+cual].attachMovie("btn_submenu", "btn_submenu"+j, j+1);
btn_submenu.miTipo = "s";
btn_submenu.miID = j;
btn_submenu._y = 16*j+16;
btn_submenu.txt.text = "> "+secciones_xml.firstChild.childNodes[cual].childNodes[j].attributes.tit;
btn_submenu.onRelease =btn_submenu.onReleaseOutside = fReleaseSM;
btn_submenu.onRollOver = fRollOver;
btn_submenu.onRollOut = fRollOut;
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>cual) {
holder_menu_mc["submenu"+i]._y += j*16;
}
}
_root.secnow = cual;
};
fCierraSM = function () {
for (var j = 0; j<secciones_xml.firstChild.childNodes[_root.secnow].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+_root.secnow]["btn_submenu"+Number(j)];
btn_submenu.removeMovieClip();
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>_root.secnow) {
holder_menu_mc["submenu"+i]._y -= j*16;
}
}
};
fMenu();
#include "lmc_tween.as"
secciones_xml = new XML("<secciones><seccion tit='Inicio'></seccion><seccion tit='Nokia E61'><item tit='Presentación'/><item tit='Ficha Técnica'/><item tit='Galería'/><item tit='Zoom'/></seccion><seccion tit='Real Mail Profesional'><item tit='Qué es'/><item tit='Consejos prácticos'/></seccion><seccion tit='Actívalo ahora'><item tit='Registro e instalación'/><item tit='Acceso al servicio'/></seccion></secciones>");
sec_ar = new Array("inicio", "nokiaE61", "realmail", "activalo");
fMenu = function () {
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
var submenu:MovieClip = holder_menu_mc.createEmptyMovieClip("submenu"+i, i);
submenu._y = 16*i;
submenu.miID = i;
var btn_menu:MovieClip = submenu.attachMovie("btn_menu", "btn_menu", 0);
btn_menu.txt.text = secciones_xml.firstChild.childNodes[i].attributes.tit;
btn_menu.miID = i;
btn_menu.miTipo = "m";
btn_menu.onRelease =btn_menu.onReleaseOutside = fReleaseM;
btn_menu.onRollOver = fRollOver;
btn_menu.onRollOut = fRollOut;
}
};
fRollOver = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x999999, .1,"linear");
}
};
fRollOut = function () {
if (this != selectedSMbtn && this != selectedMbtn) {
this.colorTo(0x666666,1,"easeOutQuad");
}
};
fSelectBtn = function (cual) {
selectedSMbtn.colorTo(0x666666, .1, "easeInQuad");
if (cual.miTipo=="m" && cual.miID != selectedMbtn.miID) {
selectedMbtn.colorTo(0x666666, 1, "easeOutQuad");
}
selectedMbtn.enabled = true;
selectedSMbtn.enabled = true;
cual.enabled = false;
cual.colorTo(0xFF0000, .1, "linear");
};
fReleaseM = function () {
fSelectBtn(this);
if (_root.secnow != undefined) {
fCierraSM();
}
fAbreSM(this.miID);
fNavTo(this.miID);
selectedMbtn = this;
};
fReleaseSM = function () {
fSelectBtn(this);
fNavTo(this._parent.miID, this.miID);
selectedSMbtn = this;
};
fNavTo = function (sec, subsec) {
trace(sec_ar[sec]+"/"+subsec);
};
fAbreSM = function (cual) {
var posy:Number = 0;
for (var j = 0; j<secciones_xml.firstChild.childNodes[cual].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+cual].attachMovie("btn_submenu", "btn_submenu"+j, j+1);
btn_submenu.miTipo = "s";
btn_submenu.miID = j;
btn_submenu._y = 16*j+16;
btn_submenu.txt.text = "> "+secciones_xml.firstChild.childNodes[cual].childNodes[j].attributes.tit;
btn_submenu.onRelease =btn_submenu.onReleaseOutside = fReleaseSM;
btn_submenu.onRollOver = fRollOver;
btn_submenu.onRollOut = fRollOut;
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>cual) {
holder_menu_mc["submenu"+i]._y += j*16;
}
}
_root.secnow = cual;
};
fCierraSM = function () {
for (var j = 0; j<secciones_xml.firstChild.childNodes[_root.secnow].childNodes.length; j++) {
var btn_submenu:MovieClip = holder_menu_mc["submenu"+_root.secnow]["btn_submenu"+Number(j)];
btn_submenu.removeMovieClip();
}
for (var i = 0; i<secciones_xml.firstChild.childNodes.length; i++) {
if (i>_root.secnow) {
holder_menu_mc["submenu"+i]._y -= j*16;
}
}
};
fMenu();
