Ir para conteúdo

POWERED BY:

Arquivado

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

Mário Mariano

"GaleriaS" em um xml

Recommended Posts

Olá, saudações...

 

Direto ao assunto: Pela estrutura do XML acho que já dá pra entender meu problema...

Uma galeria funciona perfeitamente, acontece que preciso agora de um menu de Categorias para gerar mais "sub-galerias".

Preciso de um botão pra cada categoria, até aí gerar estes botões ok, mas acho que o for num rola 2 dentro de um mesmo "dados.onLoad = function() {...}"

pra eu gerar o menu de categorias e os itens da própria categoria.

 

resumindo:

preciso do "for" pra que categorias e itens sejam gerados automaticamente

preciso que ao clicar na categoria (NÓ) esta (re)carregue os itens que nela conste (NÓS FILHOS);

 

Isto é possível?

 

Desde já... Obrigado!

 

FLASH (ACTION 2.0)atual;

var dados:XML = new XML();
dados.ignoreWhite = true;
dados.load('portfolio.xml');
dados.onLoad = function() {
qtd = this.childNodes[0].childNodes[0].childNodes.length;
for(i=0; i<qtd; i++){
bt.duplicateMovieClip("bt" + i, i);
eval("bt"+i)._x += i*(bt._width + 4);
eval("bt"+i).img = this.childNodes[0].childNodes[0].childNodes[i].attributes.id;
eval("bt"+i).foto = this.childNodes[0].childNodes[0].childNodes[i].attributes.foto;
eval("bt"+i).ft = eval("bt"+i).foto;
eval("bt"+i).titulo = this.childNodes[0].childNodes[0].childNodes[i].attributes.titulo;
eval("bt"+i).tit = eval("bt"+i).titulo;
loadMovie("portfolio/miniaturas/"+eval("bt"+i).ft,eval("bt"+i).thumb);
eval("bt"+i).dscr = eval("bt"+i).dsc;
eval("bt"+i).onRelease = function(){
loadMovie("portfolio/"+this.foto,_parent._parent.alvo);
_parent.titulo = this.tit;
}
}
_parent.scrolling();
bt.unloadMovie();
}

 

XML (portfolio.xml) atual:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<links>
	<galeria id="1" galeria="GALERIA UM">
		<arquivo id="1" foto="foto1.png" miniatura="foto1.png" descricao="Descrição da foto um"/>
		<arquivo id="2" foto="foto2.png" miniatura="foto2.png" descricao="Descrição da foto dois"/>
		<arquivo id="3" foto="foto3.png" miniatura="foto3.png" descricao="Descrição da foto três"/>
		<arquivo id="4" foto="foto4.png" miniatura="foto4.png" descricao="Descrição da foto quatro"/>
		<arquivo id="5" foto="foto5.png" miniatura="foto5.png" descricao="Descrição da foto cinco"/>
		<arquivo id="6" foto="foto5.png" miniatura="foto5.png" descricao="Descrição da foto seis"/>
	</galeria>
	<galeria id="2" galeria="GALERIA DOIS">
		<arquivo id="7" foto="foto7.png" miniatura="foto7.png" descricao="Descrição da foto sete"/>
		<arquivo id="8" foto="foto8.png" miniatura="foto8.png" descricao="Descrição da foto oito"/>
		<arquivo id="9" foto="foto9.png" miniatura="foto9.png" descricao="Descrição da foto um"/>
		<arquivo id="10" foto="foto10.png" miniatura="foto10.png" descricao="Descrição da foto dez"/>
		<arquivo id="11" foto="foto11.png" miniatura="foto11.png" descricao="Descrição da foto onze"/>
		<arquivo id="12" foto="foto12.png" miniatura="foto12.png" descricao="Descrição da foto doze"/>

	</galeria>
	<galeria id="3" galeria="GALERIA TRÊS">		
		<arquivo id="13" foto="foto13.png" miniatura="foto13.png" descricao="Descrição da foto treze"/>
		<arquivo id="14" foto="foto14.png" miniatura="foto14.png" descricao="Descrição da foto quatorze"/>
		<arquivo id="15" foto="foto15.png" miniatura="foto15.png" descricao="Descrição da foto quinze"/>
		<arquivo id="16" foto="foto16.png" miniatura="foto16.png" descricao="Descrição da foto dezesseis"/>
		<arquivo id="17" foto="foto17.png" miniatura="foto17.png" descricao="Descrição da foto dezesete"/>
		<arquivo id="18" foto="foto18.png" miniatura="foto18.png" descricao="Descrição da foto dezoito"/>
	</galeria>
</links>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples

 

galeria1.onPress = function(){
 galleryId = 1;
}

var dados:XML = new XML();
dados.ignoreWhite = true;
dados.load('portfolio.xml');
dados.onload = function() {
qtd = this.firstChild.childNodes[galleryId].childNodes.length;
for(i=0; i<qtd; i++){
bt.duplicateMovieClip("bt" + i, i);
eval("bt"+i)._x += i*(bt._width + 4);
eval("bt"+i).img = this.firstChild.childNodes[galleryId].childNodes[i].attributes.id;
eval("bt"+i).foto = this.firstChild.childNodes[galleryId].childNodes[i].attributes.foto;
eval("bt"+i).ft = eval("bt"+i).foto;
eval("bt"+i).titulo = this.firstChild.childNodes[galleryId].childNodes[i].attributes.titulo;
eval("bt"+i).tit = eval("bt"+i).titulo;
loadMovie("portfolio/miniaturas/"+eval("bt"+i).ft,eval("bt"+i).thumb);
eval("bt"+i).dscr = eval("bt"+i).dsc;
eval("bt"+i).onRelease = function(){
loadMovie("portfolio/"+this.foto,_parent._parent.alvo);
_parent.titulo = this.tit;
}
}
_parent.scrolling();
bt.unloadMovie();
}

Eu não usaria botões... e sim um combobox... mais ai fica a sua vontade.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

berseck... vlw pela dica, entendi a logica... só não acho que seja tão simples,

isso já resolveria o meu problema atual, mas agora, como dar o "reload" na função?

mandar carregar o xml novamente (com outra id) trava tudo, já tentei no trampo e em casa... e travou.

 

Se puder me ajudar...

 

Novamente Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trocar o XML que ele ta lendo???

 

Faça o botão chamar isso aqui: dados.load('portfolio.xml'); so que com outra url... como a função de load já existe ele vai refazer o load

Soh que do jeito que você ta fazendo ele vai ficar duplicando eternamente :) e nunca vai remover da tela...

 

Você tem que lembrar que a data que você ta colocando na tela... tem que sair para entrar a nova informação...

Por exemplo se eu estivesse colocando um combobox com xml... que fosse carregar um dataGrind

 

Eu iria fazer um dataGrind.removeAll(); dentro da ação do change do combobox que chama o outro XML... para que ele remova o conteúdo e ai sim passe a adicionar novo conteúdo.

Como no seu caso você ta usando o mc bt... você teria que limpar todo o conteúdo dele... fazendo um simples bt.unloadMovie você descarregaria todo o conteúdo do mesmo... e ai você teria que re criar esse mc para que ele pudesse dar continuidade ao código.

 

Espero que tenha entendido +/- como você deve fazer.

Qualquer coisa só perguntar

 

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.