WebWalter 0 Denunciar post Postado Setembro 24, 2010 Galera, to com um probleminha... Eu gero um menu dinamicamente a partir de um arquivo XML. Até ai beleza. No mesmo laço que crio os MC ja vou criando as funções, só que, todos os botões ficam com a mesma (a ultima) segue o cod: System.useCodepage = true; var file:XML=new XML(); file.ignoreWhite = true; file.load("../xml/menu.xml"); file.onload = function($sucess) { if($sucess) { px = -500 //ponto x inicial dos botoes nos = this.firstChild.childNodes.length //quantos botoes trace(nos) for(c=0;c<nos;c++) { //as variaveis do xml label = this.firstChild.childNodes[c].attributes.label; cor = this.firstChild.childNodes[c].attributes.cor; link = this.firstChild.childNodes[c].attributes.page; tipo = this.firstChild.childNodes[c].attributes.type; target = this.firstChild.childNodes[c].attributes.target; largura = this.firstChild.childNodes[c].attributes.largura; //cria o botão... menu_mc.attachMovie("botao_"+cor,"dinamico"+c,c) //posicao x do botao largura = parseInt(largura) menu_mc["dinamico"+c]._x= px menu_mc["dinamico"+c]._y=-430 //largura do botao setProperty(menu_mc["dinamico"+c], _width, largura); //após criar o botao, seta a posicao inicial do proximo px = px+largura+10; //cria o campo texto dentro do botão... texto = menu_mc["dinamico"+c].createTextField("texto", 1, 10, 1, 150, 22); menu_mc["dinamico"+c].texto.text = label; //formata o texto do botao... formatodoTexto = new TextFormat(); formatodoTexto.font = "Arial"; formatodoTexto.size = 11; formatodoTexto.italic = false; formatodoTexto.bold = false; formatodoTexto.letterSpacing = 1; formatodoTexto.color = 0xFFFFFF; menu_mc["dinamico"+c].texto.setTextFormat(formatodoTexto); menu_mc["dinamico"+c].onRelease = function() { abre(link, tipo, target); } menu_mc["dinamico"+c].onRollOver = function() { trace( c ) } } } else { trace("Ops! O XML do menu não pôde ser carregado :( "); } } nesse trace( c ) ele deveria mostrar entre 0 e 5 , mas mostra só 6 o menu ele monta certinho... Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 24, 2010 Vou dar a mesma dica que dei para outra usuária num tópico parecido: menu_mc["dinamico"+c].link = link menu_mc["dinamico"+c].tipo = tipo menu_mc["dinamico"+c].target = target Ai no onRelease você faz: abre(menu_mc["dinamico"+c].link, menu_mc["dinamico"+c].tipo, menu_mc["dinamico"+c].target) Abraços Compartilhar este post Link para o post Compartilhar em outros sites
WebWalter 0 Denunciar post Postado Setembro 24, 2010 Vou dar a mesma dica que dei para outra usuária num tópico parecido: menu_mc["dinamico"+c].link = link menu_mc["dinamico"+c].tipo = tipo menu_mc["dinamico"+c].target = target Ai no onRelease você faz: abre(menu_mc["dinamico"+c].link, menu_mc["dinamico"+c].tipo, menu_mc["dinamico"+c].target) Abraços eu fiz, mas o problema continua igual no primeiro trace abaixo, ele lista os links na ordem certinho na funcao abre ele abre 'undefined' no trace do onRollOver ele só exibe undefined menu_mc["dinamico"+c].link = link menu_mc["dinamico"+c].tipo = tipo menu_mc["dinamico"+c].target = target trace(menu_mc["dinamico"+c].link) menu_mc["dinamico"+c].onRelease = function() { abre(menu_mc["dinamico"+c].link, menu_mc["dinamico"+c].tipo, menu_mc["dinamico"+c].target) } menu_mc["dinamico"+c].onRollOver = function() { trace(menu_mc["dinamico"+c].link) //exibe undefined :( } Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 24, 2010 Estranho se ele ta exibindo antes corretamente E você não zerou o object ele tem que mostrar o valor... Ele só da undefined se você zerar o object ou recriar o mesmo Se ele tiver correto ele não da esse problema não Teria como passar o exemplo do XML Assim eu posso talvez recriar para entender melhor o problema? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
WebWalter 0 Denunciar post Postado Setembro 24, 2010 <?xml version="1.0" encoding="utf-8"?> <menu> <home page="AREA_home" label="HOME" type="swf" cor="amarelo" largura="100"></home> <ex1 page="AREA_link1" label="TITULO1" type="swf" target="_self" cor="cinza" largura="120"></ex1> <ex2 page="AREA_exemplo2" label="Exemplo 2" type="swf" target="_self" cor="preto" largura="170"></ex2> <ex3 page="detalhes.aspx" label="detalhes" type="asp" target="_self" cor="azul" largura="115"> <sub1 label="Detalhado" largura="70"></sub1> <sub2 label="Este mês" largura="150"></sub2> <sub3 label="Este ano" largura="100"></sub3> </ex3> <fique_ligado page="AREA_fique_ligado" label="FIQUE LIGADO" type="swf" target="_self" cor="vermelho" largura="115"> <sub1 label="Novo site" largura="70"></sub1> <sub2 label="Novos produtos" largura="150"></sub2> <sub3 label="Novas promoções" largura="100"></sub3> </fique_ligado> <contato page="AREA_contato" label="CONTATO" type="swf" target="_self" cor="laranja" largura="115"></contato> </menu> Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Setembro 24, 2010 Desculpe mas eu fiz assim para testar: System.useCodepage = true; var file:XML=new XML(); file.ignoreWhite = true; file.load("menu.xml"); var menu_mc:MovieClip = this.createEmptyMovieClip("menu_mc", -10); menu_mc._x = 10; menu_mc._y = 10; file.onLoad = function($sucess) { if($sucess) { px = -500 //ponto x inicial dos botoes nos = this.firstChild.childNodes.length //quantos botoes //trace(nos) for(c=0;c<nos;c++) { //cria o botão... menu_mc.attachMovie("botao_"+cor,"dinamico"+c,c) //as variaveis do xml label = this.firstChild.childNodes[c].attributes.label; cor = this.firstChild.childNodes[c].attributes.cor; menu_mc["dinamico"+c].link = this.firstChild.childNodes[c].attributes.page; menu_mc["dinamico"+c].tipo = this.firstChild.childNodes[c].attributes.type; menu_mc["dinamico"+c].target = this.firstChild.childNodes[c].attributes.target; largura = this.firstChild.childNodes[c].attributes.largura; //posicao x do botao largura = parseInt(largura) menu_mc["dinamico"+c]._x = 60*c menu_mc["dinamico"+c]._y= 10; //largura do botao setProperty(menu_mc["dinamico"+c], _width, largura); //após criar o botao, seta a posicao inicial do proximo px = px+largura+10; //cria o campo texto dentro do botão... texto = menu_mc["dinamico"+c].createTextField("texto", 1, 10, 1, 150, 22); menu_mc["dinamico"+c].texto.text = label; //formata o texto do botao... formatodoTexto = new TextFormat(); formatodoTexto.font = "Arial"; formatodoTexto.size = 11; formatodoTexto.italic = false; formatodoTexto.bold = false; formatodoTexto.letterSpacing = 1; formatodoTexto.color = 0xFFFFFF; menu_mc["dinamico"+c].texto.setTextFormat(formatodoTexto); menu_mc["dinamico"+c].onRelease = function() { trace(this.link); } menu_mc["dinamico"+c].onRollOver = function() { trace(this.link); } } } else { trace("Ops! O XML do menu não pôde ser carregado :( "); } } E tanto no click como no rollOver ele mostrou o link corretamente. E se eu usar o menu_mc["dinamico"+c].link como havia dito realmente da problema Então altere para this.link Abraços Compartilhar este post Link para o post Compartilhar em outros sites
WebWalter 0 Denunciar post Postado Setembro 24, 2010 Funfou msm ! Brigadão cara! Salvou minha =D Abraços Compartilhar este post Link para o post Compartilhar em outros sites