Descrição: Menu com submenu feito em AS e XML
Versão A.S.: Flash MX
CODE
// AS
var XMLMenu = function (file, inix, iniy, width, target) {
System.useCodepage = true;
this.ident = 20;
this.inix = inix == undefined ? 0 : inix;
this.iniy = iniy == undefined ? 0 : iniy;
this.target = target == undefined ? _root : target;
this.width = width == undefined ? Stage.width : width;
this.itens = [];
this.titulo = '';
this.xmlDoc = new XML();
this.xmlDoc.ignoreWhite = true;
this.xmlDoc._ref = this;
this.xmlDoc.onLoad = function (stats) {
this._ref.Populate();
}
this.xmlDoc.load(file);
}
XMLMenu.prototype.Populate = function () {
var node = this.xmlDoc.firstChild;
this.titulo = node.attributes.titulo;
var pais = node.childNodes.length;
for(var i=0; i<pais; i++) {
var p = new Object();
p = node.childNodes[i].attributes;
this.itens[i] = new Array();
this.itens[i][0] = p;
for(var j=0; j<node.childNodes[i].childNodes.length; j++) {
var p = new Object();
p = node.childNodes[i].childNodes[j].attributes;
this.itens[i][this.itens[i].length] = p;
}
}
this.Construir();
}
XMLMenu.prototype.Construir = function () {
if(this.titulo != '') {
this.target.createEmptyMovieClip('titulo',this.target.getNextHighestDepth());
this.target.titulo._x = this.inix;
this.target.titulo._y = this.iniy;
this.target.titulo.createTextField('title',1,0,0,this.width,10);
var tf = this.GetTextFormat(this.xmlDoc.firstChild.attributes);
this.target.titulo.title.selectable = false;
this.target.titulo.title.text = this.titulo;
this.target.titulo.title.autoSize = 'left';
this.target.titulo.title.setTextFormat(tf);
this.iniy = this.target.titulo._y + this.target.titulo._height;
this.inix = this.target.titulo._x;
}
for(var j=0; j<this.itens.length; j++) {
var it = this._make(this.itens[j][0], j);
var prevObj = j == 0 ? this.target.titulo : this.target['item'+(j-1)];
it._x = prevObj._x + (j > 0 ? 0 : this.ident);
it._y = prevObj._y + prevObj._height;
it._ref = this;
it.opened = false;
it.onRelease = function () {
if(this.opened == false) {
this._ref._openMenu(this);
} else {
this._ref._closeMenus();
}
}
}
}
XMLMenu.prototype._openMenu = function (obj) {
var final = 0;
this._closeMenus();
for(var i=1; i<this.itens[obj.indice].length; i++) {
var item = this._make(this.itens[obj.indice][i], i+10000);
item._x = obj._x + this.ident;
item._y = obj._y + (item._height * i);
item.onRelease = function () {
if(this.tipo == 'movie') {
loadMovieNum(this.url, this.level);
}
if(this.tipo == 'link') {
getURL(this.url, this.window);
}
}
final = item._y;
}
for(var i=obj.indice+1; i<this.itens.length; i++) {
this.target['item'+i]._y = final + (this.target['item'+i]._height*(i-obj.indice));
}
obj.opened = true;
}
XMLMenu.prototype._closeMenus = function () {
for(var i=0; i<this.itens.length; i++) {
for(var j=1; j<this.itens[i].length; j++) {
removeMovieClip(this.target['item'+(j+10000)]);
}
//this.target['item'+i]._x = inix + this.ident;
this.target['item'+i]._y = this.iniy + (this.target['item'+i]._height * i);
this.target['item'+i].opened = false;
}
}
XMLMenu.prototype._make = function (obj, indice) {
this.target.createEmptyMovieClip('item'+indice,this.target.getNextHighestDepth());
var item = this.target['item'+indice];
item.indice = indice;
item.createTextField('titulo',1,0,0,this.width,10);
item.titulo.selectable = false;
item.titulo.text = obj.titulo;
item.titulo.autoSize = 'left';
item.titulo.title.selectable = false;
item.titulo.setTextFormat(this.GetTextFormat(obj));
for(var a in obj) {
item[a] = obj[a];
}
return item;
}
XMLMenu.prototype.GetTextFormat = function (node) {
var tf = new TextFormat();
if(node.fonte) tf.font = node.fonte;
if(node.cor) tf.color = node.cor;
if(node.tamanho) tf.size = node.tamanho;
if(node.sublinhado) tf.underline = node.sublinhado;
if(node.italico) tf.italic = node.italico;
if(node.negrito) tf.bold = node.negrito;
return tf;
}
var menu = new XMLMenu('menu.xml');
CODE
<!-- XML -->
<menu titulo="HUFERSIL.WEBDESIGN" url="http://www.hufersil.com.br" cor="0x003300" fonte="Arial" italico="true" negrito="true">
<pai titulo="Empresa" cor="0x0000CC" fonte="Verdana">
<item titulo="Histórico" tipo="movie" level="1" url="/swf/empresa.swf" />
<item titulo="Contato" tipo="movie" level="1" url="/swf/contato.swf" />
<item titulo="Mapa" tipo="movie" level="1" url="/swf/mapa.swf" />
</pai>
<pai titulo="Links" cor="0x0000CC" fonte="Verdana">
<item titulo="MX Studio" tipo="link" window="_blank" url="http://www.mxstudio.com.br" />
<item titulo="Flash Kit" tipo="link" window="_blank" url="http://www.flashkit.com" />
<item titulo="2 Advanced" tipo="link" window="_blank" url="http://www.2advanced.com.br" />
</pai>
<pai titulo="Fóruns" cor="0x000022" fonte="Verdana" negrito="true">
<item titulo="MX Studio Fórum" tipo="link" window="_blank" url="http://forum.mxstudio.com.br" />
<item titulo="Flash kit" tipo="link" window="_blank" url="http://www.flashkit.com/board" />
</pai>
</menu>

Help














