Tojo 0 Denunciar post Postado Fevereiro 8, 2007 Olá... Eu tenho uma função, e esta função funciona mais ou menos assim: total = registros no XMLfunção criar(total){entra um nível no XMLcria total movieclipexecuta função criar(total) novamente} Eu quero criar uma função recursiva. A quantidade de MC criados vem do XML... A cada vez que ele executa a função, ele verifica se existem sub-níveis no XML, e caso exista, ele executa mais uma vez a função... e assim por diante... Eu preciso que, ele verifique a posição do movieclip, e quando criar o próximo, ele crie um pouco ao lado. Algo do tipo: _root['item'+i]._x = _root['menu do nivel anterior']._x + _root['menu do nivel anterior']._width; Não sei se consegui explicar direito... Bom, valeu pessoal! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Tojo 0 Denunciar post Postado Fevereiro 9, 2007 Bom, vou colocar aqui o código que eu tenho... A variável largura, é a que deve definir que os itens de menu, a cada vez que carregarem a função, posicionem os MC mais para o lado. Valeu //configuraçõesvar distancia = 24;var largura = 210.4;_root['sub_menu']._y = _root['menu'].width;//fim configuraçõesSystem.useCodepage = true;var meuXML:XML = new XML();meuXML.load("arquivo.xml");meuXML.ignoreWhite = true;meuXML.onLoad = carregaXML;function carregaXML(){ //aqui, eu dou o nome do cabeçalho do menu _root['menu'].item = this.childNodes[0].childNodes[0].attributes.id; //aqui, é para descobrir o número de itens dentro deste menu totalXML = this.childNodes[0].childNodes[0].childNodes[0].childNodes.length; //o for monta o menu. repete o número de itens que existem neste XML; for (var i = 0; i<=totalXML; i++){ //base contém o caminho padrão para acessar qualquer item do menu (e sub menus) base = this.childNodes[0].childNodes[0].childNodes[0]; //tamanho contém o número de sub-itens, em cada um dos itens do menu principal tamanho[i] = this.childNodes[0].childNodes[0].childNodes[0].childNodes[i].childNodes.length; pos = i + 1; if(base.childNodes[i].childNodes != null){ if(base.childNodes[i].attributes.id == "sub"){ anterior = pos - 1; valorbotao = base.childNodes[i].attributes.titulo; sub_menu.duplicateMovieClip("menu"+i,i, {_x:0, _y:pos*distancia}); node = i; size_for = base.childNodes[i].childNodes.length - 1; _root['menu'+i].item = valorbotao; //funçoes pro MC virar button _root['menu'+i].tag=i//guarda o valor _root['menu'+i].onRollOver = function(){ this.gotoAndStop(2); //Aqui, o criador dos sub_menus //------------------------------------ fsub_menu(this.tag,size_for,base,totalXML); //------------------------------------ } _root['menu'+i].onRollOut = function(){ this.gotoAndStop(1); } _root['menu'+i].onRelease = function(){ clique = this.tag } //--------------------------- }else{ valorbotao = base.childNodes[i].childNodes; menu.duplicateMovieClip("menu"+i,i, {_x:0, _y:pos*distancia}); _root['menu'+i].item = valorbotao + " - " + i; //funçoes pro MC virar button _root['menu'+i].tag=i//guarda o valor _root['menu'+i].onRollOver = function(){ this.gotoAndStop(2); } _root['menu'+i].onRollOut = function(){ this.gotoAndStop(1); } _root['menu'+i].onRelease = function(){ clique = this.tag; } } } }}function fsub_menu(node,size_for,base,id){pos_y = 0;size_for_sub= 0;base_sub = null;menos = node - 1; pos_y = _root['menu'+node]._y - distancia; base_sub = base.childNodes[node]; largura = _root['menu'+node]._x + _root['menu']._width; idb = base_sub.childNodes.length + 1; totalNext = idb; for (var fi = 0; fi<=size_for; fi++){ pos_sub = fi + 1; if(base_sub.childNodes[fi].childNodes != null){ if(base_sub.childNodes[fi].attributes.id == "sub"){ anterior = pos_sub - 1; valorbotao = base_sub.childNodes[fi].attributes.titulo; node = idb; sub_menu.duplicateMovieClip('menu'+idb,idb, {_x: largura, _y:pos_y+distancia}); size_for_sub = base_sub.childNodes[fi].childNodes.length - 1; _root['menu'+ibd].item = valorbotao; //funçoes pro MC virar button _root['menu'+idb].tag=fi//guarda o valor _root['menu'+idb].onRollOver = function(){ this.gotoAndStop(2); //Aqui, o criador dos sub_menus //------------------------------------ fsub_menu(this.tag,size_for_sub,base_sub,totalNext); //------------------------------------ } _root['menu'+idb].onRollOut = function(){ this.gotoAndStop(1); } _root['menu'+idb].onRelease = function(){ clique = this.tag } //--------------------------- }else{ valorbotao = base_sub.childNodes[fi].childNodes; menu.duplicateMovieClip("menu"+idb,idb, {_x: largura, _y:pos_y+distancia}); _root['menu'+idb].item = valorbotao + " - " + idb; //funçoes pro MC virar button _root['menu'+idb].tag=idb//guarda o valor _root['menu'+idb].onRollOver = function(){ this.gotoAndStop(2); } _root['menu'+idb].onRollOut = function(){ this.gotoAndStop(1); } _root['menu'+idb].onRelease = function(){ clique = this.tag; } } } pos_y = pos_y + distancia; idb = idb + 1; }}/*//fazer função que faz os movie clips sumiremfunction fsub_menu_rem(node,size_for,base,id){ base_sub = base.childNodes[node]; for (var fi = 0; fi<=size_for; fi++){ _root["menu"+id].removeMovieClip(); }}*/ Compartilhar este post Link para o post Compartilhar em outros sites