Jump to content


Photo

Problemas Com Flash E Xml


  • Faça o login para participar
1 reply to this topic

#1 O malinha

O malinha

    12 Horas

  • Usuários
  • 212 posts
  • Sexo:Não informado

Posted 04/08/2006, 12:46

Pessoal,

tenho um seguinte XML que gera no Flash um menu com alguns botões.
<?xml version="1.0" encoding="iso-8859-1"?>
<cliente id="1" titulo="Lorem Ipsum" link="loremipsum.swf"/>
<cliente id="2" titulo="Lorem Ipsum" link="loremipsum.swf"/>
<cliente id="3" titulo="Lorem Ipsum" link="loremipsum.swf"/>
<cliente id="4" titulo="Lorem Ipsum" link="loremipsum.swf"/>
<cliente id="5" titulo="Lorem Ipsum" link="loremipsum.swf"/>

A pessoa escolhe um cliente Lorem Ipsum e clica, e entao carrega um loremipsum.swf.
Nesse swf eu tenho outro XML que gera no swf carregado uma pequena galeria de imagens.
<?xml version="1.0" encoding="iso-8859-1"?>
<cliente>
<id>1</id>
<nome>Lorem Ipsum</nome>
<oque>Sistema de Identidade Visual para o evento Encontro Semestral da PI</oque>
<foto fp="imgs/foto1p.jpg" /> 
<foto fp="imgs/foto2p.jpg" /> 
<foto fp="imgs/foto3p.jpg" />
</cliente>

<cliente>
<id>2</id>
<nome>Lorem Ipsum</nome>
<oque>Sistema de Identidade Visual para o evento Encontro Semestral da PI</oque>
<foto fp="imgs/foto1p.jpg" /> 
<foto fp="imgs/foto2p.jpg" /> 
<foto fp="imgs/foto3p.jpg" />
</cliente>

<cliente>
<id>3</id>
<nome>Lorem Ipsum</nome>
<oque>Sistema de Identidade Visual para o evento Encontro Semestral da PI</oque>
<foto fp="imgs/foto1p.jpg" /> 
<foto fp="imgs/foto2p.jpg" /> 
<foto fp="imgs/foto3p.jpg" />
</cliente>

Pois então, gostaria de quando eu apertar no botão com id="1" ele lêsse as informações contidas na tag abaixo da tag <id>1</id> da galeria de fotos e assim sucessivamente como todos os números.

Como fazer isso?

Valeu pela atenção!

#2 Micheeel

Micheeel

    ...

  • Usuários
  • 383 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC

Posted 04/08/2006, 19:49

E ai malinha B)

Primeiramente deixa eu fazer umas considerações sobre o que você postou...

CONSIDERAÇÕES:
1. Vou supor que um PHP esteja gerando esse XML para você ou algo do tipo.

2. Quem vai ler o XML é o FLASH, então altere a codificação do XML para UTF-8
De...
<?xml version="1.0" encoding="iso-8859-1"?>
Para...
<?xml version="1.0" encoding="[b]UTF-8[/b]"?>

3. Se voce precisar e tiver problemas com acentuação, pesquise pelo utf8enconde e utf8encode no PHP para fazer este XML... postei um exemplo lendo de um banco de dados em um post do Pedro Paulo não faz muito tempo.

4. Ao invés de usar atributos, use as tags
De...
<foto fp="imgs/foto1p.jpg" />

Para...
<foto>imgs/foto1p.jpg</foto>

5. Essas fotos, você coloca dentro de uma outra tag, chamada fotos... então teu XML eu deixaria assim:
<cliente>
<id>1</id>
<nome>Lorem Ipsum</nome>
<oque>Sistema de Identidade Visual para o evento Encontro Semestral da PI</oque>
<fotos>
   <foto>imgs/foto1p.jpg</foto>
   <foto>imgs/foto2p.jpg</foto>
   <foto>imgs/foto3p.jpg</foto>
</cliente>

Ok, feitas as considerações que visavam alterar um pouco teu modelo para facilitar, seguir uma certa padronização no XML (atributos possuem algumas limitações) e outras conformidades referentes a codificação do texto. Vou considerar que você fez estas...

PROGRAMAÇÃO:
Aqui é onde a coisa fica divertida...

1. Primeiramente sugiro que você pegue seu XML depois de carregado e passe ele para um array multidimensional. Isso torna a coisa mais simples e ai você pode usar o delete ou o 'null' para excluir o XML lido da memoria do flash, fazendo com que a aplicação rode mais leve. Vou supor que você saiba como fazer isto.
Mas já dando um toque... Você vai ter um array desta forma lá no flash depois de ter lido o XML:
array[0] // cliente 1
array[0][0] // retorna id do cliente 1, no caso '1'
array[0][1] // retorna o nome do cliente 1, no caso 'Lorem Ipsum'
array[0][2] // retorna o que é a galeria/aplicação, no caso 'Sistema de Identidade....'
array[0][3] // aqui você tem a galeria de imagens ok?
array[0][3][0] // endereço da foto 1
array[0][3][1] // endereço da foto 2
array[0][3][2] // endereço da foto 3

E depois disso começa o segundo cliente... que repete na mesma estrutura mas mudando o primeiro indice, assim:
array[1] // cliente 2
array[1][0] // retorna id do cliente 2
array[1][1] // retorna o nome do cliente 2
array[1][2] // retorna o que é a galeria/aplicação
array[1][3] // galeria de imagens
array[1][3][0] // endereço da foto 1
array[1][3][1] // endereço da foto 2
array[1][3][2] // endereço da foto 3

E assim por diante.

Por que fazer isso? Bom, primeiro porque é mais fácil de acessar as váriaveis já que você sabe certino onde elas estão. Segundo porque teu código vai ficar beeem mais legivel sem aqueles node[1], child pananan, childNode[39123], firstChild, nodeValue e blablabla. Você vai usar isso uma vez p/ montar o array e FIM. Nada mais dessa bagunça no código. Isso é muito importante p/ você p/ depois debugar o codigo, organização dá um certo trabalho, mas compensa depois e dá menos dor de cabeça.

2. Agora vamos ao flash... depois de ter lido e montado o array. Vou supor que seja uma galeria HORIZONTAL, por isso vou mexer no eixo X...
var i,j:Number = 0;
var espacoX:Number = 50;

// para todos os dados do array...
for (i=0; i < array.length; i++)
{
	// ver a quantidade de fotos na categoria clicada (id 1 como vc disse)
	for (j=0; j < array[i][3].length; j++)
   {	 
		 // buscar da biblioteca e por no palco um movieclip que contenha as informações que você precisa
		 // se for só um espaço para as imagens, podes utilizar o createEmptyMovie. Mas isso não é obrigatório
		 this.attachMovie("alvo", "alvo"+i, this.getNextHighestDepth());
		 this['alvo'+i]._x = j * espacoX;
		 this['alvo'+i].loadMovie(array[i][3][j]);
}

Bom, é mais ou menos essa a idéia.
Claro que antes disso você vai fazer ele abrir uma área com um menu para ele escolher a galeria que interessa pra ele e tudo mais... Mas a pedra e as ferramentas você tem, só falta lapidar agora.

Lembrando que... talvez você precise fazer rolagem na galeria... não levei isso em consideração, mas é mais uma parada pra você resolver. Dá um trabalhinho legal essas coisas em Flash. Parecem simples mas não é como programação normal que é só jogar um componente na tela e :assobio: tudo pronto (+/-)

Espero ter ajudado, se tiver dúvidas pergunte :) (y)

PS: Eu fiz o código agora, de cabeça aqui na faculdade que não tive aula, então não garanto nada que funcione, talvez tenha um erro ou outro mas a idéia não muda :P
[]'s
Michel

Posted Image




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq