Ir para conteúdo

POWERED BY:

Arquivado

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

Tojo

Menu em Flash + XML

Recommended Posts

Olá pessoal...

 

To desenvolvendo um menu em flash, no qual os dados da organização do menu serão carregados através de um XML...

 

XML:

<?xml version="1.0" encoding="iso-8859-1"?><Menu>	<Empresa id="Empresa">		<Perfil id="Perfil">			<Visao id="sub" titulo="Visão geral">				<novos>teste  aaa</novos>				<novos2>teste2aaa</novos2>				<novos3>teste3f gre ger</novos3>				<novos4>teste gerg</novos4>				<novos5>teste5 hrtjrtj</novos5>			</Visao>			<Missao id="link2">Missão</Missao>			<Categ id="link2">Antônio</Categ>			<SubMenu id="sub" titulo="Sub menu">				<novo>teste</novo>				<novo2>teste2</novo2>				<novo3>teste3</novo3>				<novo4>Teste</novo4>				<novo5>teste5</novo5>			</SubMenu>			<Metas id="link5">Metas</Metas>		</Perfil>	</Empresa></Menu>

Action's

//configuraçõesvar distancia = 24;//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].onRollOver = function(){						 this.gotoAndStop(2);						//Aqui, o criador dos sub_menus						//------------------------------------						fsub_menu(node,size_for,base,totalXML);						//------------------------------------					}					_root['menu'+i].onRollOut = function(){						 this.gotoAndStop(1);					}										_root['menu'+i].onRelease = function(){						clique = clique + i;					}					//---------------------------				}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].onRollOver = function(){						 this.gotoAndStop(2);					}					_root['menu'+i].onRollOut = function(){						 this.gotoAndStop(1);					}									}			}	}}function fsub_menu(node,size_for,base,id){		id = totalXML + 1;	pos_y = node + 1;	base_sub = base.childNodes[node];		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_sub = pos - 1;						valorbotao = base_sub.childNodes[fi].attributes.titulo;						sub_menu.duplicateMovieClip("menu"+id,id, {_x:_root["menu"+node]._width, _y:pos_y*distancia});												node_sub = fi;						size_for = base_sub.childNodes[fi].childNodes.length - 1;						_root['menu'+id].item = valorbotao;					//funçoes pro MC virar button					_root['menu'+id].onRollOver = function(){						 this.gotoAndStop(2);							//------------------------------------							//Aqui, o criador dos sub_menus							//------------------------------------							//fsub_menu(node_sub,size_for,base_sub,id);							//------------------------------------																 					}					_root['menu'+id].onRollOut = function(){						 this.gotoAndStop(1);					}												}else{						valorbotao = base_sub.childNodes[fi].childNodes;						menu.duplicateMovieClip("menu"+id,id, {_x:_root["menu"+node]._width, _y:pos_y*distancia});						_root['menu'+id].item = valorbotao;					//funçoes pro MC virar button					_root['menu'+id].onRollOver = function(){						 this.gotoAndStop(2);					}					_root['menu'+id].onRollOut = function(){						 this.gotoAndStop(1);					}											}				}			pos_y = pos_y + 1;			id = id + 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();							}}*/

Bom, deixa eu explicar...

 

Eu preciso saber como eu faço para que, eu consiga com que cada botão fique com uma referência diferente.

 

A linha

_root['menu'+i].onRelease = function(){

clique = + i;

}

 

Eu preciso que, por exemplo, em cada um dos botões clicados, a variável "clique" assuma um valor diferente, de acordo com a sua posição durante a criação dos movie clips...

 

Não sei se fui claro...

 

Obrigado!

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim

 

_root['menu'+i].clique=0//inicializa a variavel_root['menu'+i].onRelease = function(){this.clique = + i;//incrementa}

 

testa ai, qualquer coisa é só falar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não funcionou...É que assim... A variável clique fica no palco, fora do movie clip menu+i...É um campo que mostra um valor, no caso, o número que a variavel clique vai armazenar.Simplificando... Eu preciso que, quando eu clique no botão, o valor da variavel clique, seja igual à variável i do botão, ou seja, no menu+i equivalente à menu4, por exemplo, o valor da variavel clique seja 4. E assim por diante.... Em cada um, tem que se manter o valor.Mas como eu disse, essa é uma variável que fica fora dos movieclips... Não sei se fui claro o suficiente....Este valor, também vai servir para que os sub-menus apareçam corretamente...Vou postar o FLA em algum servidor de arquivos, pra todo mundo ver... Alguém sabe um bom servidor?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

então indepentende do botão q ele clicar, vai aumentar o valor da mesma variavel?? se for isso é_root['menu'+i].onRelease = function(){_parent.clique = + i;//incrementa}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, eu preciso que por exemplo, o movie clip "menu4" (que foi gerado num for _root['menu'+i]), quando ele seja clicado, o valor da variável clique fique igual ao número que acompanha o nome do MC, neste caso, o 4.

 

Cada botão que eu clique, vai mostrar o número do botão.

 

Clico no menu7, clique vale 7, no menu2 e clique vale 2, e assim por diante...

 

Valeu...

 

Brigadão!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa...

 

trancou outra vez...

 

agora vou postar aqui o arquivo, com o XML, para que todos possam ver, e quem quiser, possa ajudar...

 

o objetivo é que os menus e sub-menus sejam lidos e criados através do XML.

 

O que determina que um item do XML tem sub-menus, é a id="sub".

 

Qualquer dúvida, me avisem...

 

Me ajudeeeeeeeeeemmm... hehehehe

 

Valeuu

 

Clique aqui e baixe o menu

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.