Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WebWalter

[Resolvido] Problema para linkar menu dinamico

Recommended Posts

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

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

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

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

 

<?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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.