OPa!!
Mais um Post aqui pra vocês sobre ActionScript..
Bom vamos logo ao que interessa ;D
É interessante que antes de tudo vocês já tenham uma boa
introdução em XML.
<?xml version="1.0" encoding="iso-8859-1"?>
<album>
<foto imagem="img.jpg" legenda="Minha legenda"/>
<foto imagem="amigos.jpg" legenda="altas festas"/>
<foto imagem="servico.jpg" legenda="mais uma reunião"/>
<foto imagem="montanha.jpg" legenda="uma bela imagem de uma montanha"/>
</album>
Veja que na primeira linha declaramos a versão do XML e o encoding que dá suporte à acentos, assim podemos colocar acentos em nossas tags.
Na segunda linha abrimos a tag "album", informando que ali começa o nosso album de fotos.
Da 3ª à 6ª linha estão nossas fotos e suas legendas. É importante saber que para cada foto você tem que declarar dessa maneira.
<foto - para indicar o início de uma nova foto;
imagem="img.jpg" - para declarar o local do arquivo;
legenda="Minha legenda" - para informar o texto correspondente à imagem;
/> - declara o término da foto.
Salve seu xml como "album.xml" (sem aspas) e vamos ao Flash.
Para testarmos o código, usaremos o "trace", para exibir os resultados na janela de saída.
Abra o Flash e no 1º frame coloque este código:
(As duas barras após cada linha servem para comentários no flash. )
>CODE <<>
System.useCodepage = true; // habilita acentos;
var arquivo:XML = new XML(); // cria a variável para ler o xml;
arquivo.load("album.xml"); // manda a variável ler o album.xml salvo anteriormente;
arquivo.ignoreWhite = true; // ignora espaços em branco no XML
arquivo.onLoad = function() { // após a leitura do XML, executa a ação:
trace(this); // mostra o conteúdo na janela de saída.
}
Pressione Ctrl + Enter e veja que aparecerá todo o nosso XML na janela de saída.
Vamos começar a fazer a leitura de linha por linhda do XML.
No XML a contagem das linhas começa apartir do 0 (zero), ou seja, a linha 1 na verdade é a linha 0 (zero).
Troque o código pelo seguinte:
>CODE <<>
System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("album.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
trace(this.childNodes[0]);
}
Repare que agora ele mostrou somente o que esta entre <album> ... <album> .
Mas por que isso? Simples, porque informamos que nós queríamos tudo o que estiver no primeiro nó do XML. Cada childNodes representa um nó no XML.
Você poderia ter usado também "firstChild"(sem aspas).
Vamos entrar mais no XML.
>CODE <<>
System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("album.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
trace(this.childNodes[0].childNodes[0]);
}
Com isso ele acessa a primeira linha das fotos. Lembre que no XML, a contagem começa do 0 (zero).
Sua caixa de saída deve ter aparecido o seguinte:
<foto imagem="img.jpg" legenda="Minha legenda" />
Quando nós vamos usar o XML para ler imagens e textos externos, não podemos deixar assim né? Temos que falar qual atributo queremos que ele pegue para mais tarde usarmos em um loadMovie.
Então vamos fazer isso agora. Pegar apenas o texto e o nome do arquivo no XML.
Como nós já estamos na linha que vai ler os atributos da foto, podemos declarar um "attributes".
>CODE <<>
System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("album.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
trace(this.childNodes[0].childNodes[0].attributes.imagem);
trace(this.childNodes[0].childNodes[0].attributes.legenda);
}
Pronto. O seu clipe de filme instanciado como "clipe" vai ler a imagem correspondente à primeira linha do XML, que nesse caso é a "casinha.jpg" e a sua caixa de texto vai ler a legenda correspondente.
Perceba que agora temos 2 trace. Um pra a foto e outro para a legenda.
No primeiro, o "attributes.imagem" pega o valor que está declarado no xml como imagem="img.jpg". E no segundo, o "attributes.legenda" pega a respectiva legenda no XML legenda="Minha legenda".
Sua janela de saída deverá ter ficado assim:
img.jpg
Minha legenda
Agora para exibir as informações no Flash, faça o seguinte:
- Crie um MovieClip, instancie-o de "imagem_mc" (sem aspas);
- Crie um campo de texto dinâmico e instancie-o de "legenda_mc" (sem aspas);
Agora é só informar ao flash para ler a imagem e o texto dentro dos alvos correspondentes.
>CODE <<>
System.useCodepage = true;
var arquivo:XML = new XML();
arquivo.load("album.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function() {
imagem_mc.loadMovie(this.childNodes[0].childNodes[0].attributes.imagem);
legenda_mc.text = this.childNodes[0].childNodes[0].attributes.legenda;
}
É isso pessoal!!
como sempre, espero que tenham gostado...
até mais!
;D