..:: MX Studio Fóruns ::..: Menu & XML - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Menu & XML

#1 User is offline   hufersil 

  • Group: Moderadores
  • Posts: 1265
  • Joined: 15-January 04

Posted 29 March 2005 - 02:34 PM

Autor: Hugo Ferreira da Silva
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>

0

#2 User is offline   mdsstudio 

  • Group: Membros
  • Posts: 7
  • Joined: 22-July 08

Posted 23 July 2008 - 11:19 AM

poxa bem q vc poderia colocar os arquivos para download smile.gif

Abç
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)