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. )
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>
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:
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);
}
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
11 comentários:
boaaa bro !!!
como sempre um otimo post !!!
eo num intendo muito mais as vezes da ^^
abraçoo bro !!
aaa otima homenagem posaksa ^^
abraço
Oi fera, muito bacana o artigo me ajudou muito.
Quero fazer uma pergunta, você pode postar um material só sobre xml, tipo atributos caracteristicas da linguagem, etc...
Ass. HSC
Ola herberts,
desculpe a demora... mas não tenho um material em mãos para disponibilizar aqui para vc!
mas vou preparar algo e te mando via e-mail pode ser?
(só me deixe o e-mail para contato)
até mais ;D
Tutorial Legal cara.. so tem um detalhe a ser ajustado:
A váriavel album esta trocada por arquivo.
;)
valeu..
Puxa vida amigo, como eu estava passando um album que eu fiz para cá e explicando acho que passo este detalhe em branco!!!
muito brigado por ter lembrado ;)
até mais!!
Então, muito interessante mesmo, mas como faço para passar do primeiro nó para o segundo, trocando as imagens e tudo o mais?
Bom dia amigo,
Você pode fazer uma função chamada
carregaImg e passar atributos pra ela pra você poder identificar qual imagem vai pegar
ex...
vc tem img1.jpg, img2.jpg, img3.jpg
e você tem 3 botões...
bt1, bt2, bt3
quando você da um onRelease no bt1
ele chama a função
carregaImg(1); // estou chamando a função passando o valor 1
ela ficaria assim
function carregaImg(id){
imagem_mc.loadMovie(this.childNodes[0].childNodes[id].attributes.imagem)
}
ai ele sempre pegaria a imagem que você esta passando quando clica...
seria isso sua dúvida?
abraços!
Cara valeuzao pela forca...
Otimo post! Parabens.
Um grande abraço
Helder Zebral
Olá, tudo bem? Estava dando uma pesquisada e acabei achando no blog um item seu sobre Xml com Flash..testei esse tuto e deu tudo certo com arquivos SWF tmb.
Estou com uma dúvida aqui, se é possível realizar uma busca de texto em arquivos SWFs externos..por exemplo o meu arquivo 'main' swf carrega varios arquivos swf (que seriam as páginas separadas em arquivos externos), e gostaria de ter a opção de buscar algum texto (nesse arquivo principal), e essa busca chamaria a página que o texto se encontra...
Sabe algum método pra eu realizar essa busca de texto em arquivos SWF externos? Desde já agradeço!
Pra você fazer essa busca você teria que dinamizar seu sistema, ou seja, colocar todos os textos em banco de dados e fazer a identificação atravez de uma ID.
Com isso você manda dar um select no banco e o texto que encontrar a palavra buscada vc retira a ID e sabe qual SWF é dono desse conteúdo.
Postar um comentário