<pedrocorreia.net ⁄>
corner
<mySearch ⁄> <mySearch ⁄>

corner
 
corner
<mySnippets order="rand" ⁄> <mySnippets order="rand" ⁄>

corner
 
corner
<myContacts ⁄> <myContacts ⁄>

<email ⁄>


pc@pedrocorreia.net

<windows live messenger ⁄>


pedrojacorreia@hotmail.com

<myCurriculum type="pdf" ⁄>


Download
corner
 
corner
<myBlog show="last" ⁄> <myBlog show="last" ⁄>

corner
 
corner
<myNews show="rand" ⁄> <myNews show="rand" ⁄>

corner
 
corner
<myNews type="cat" ⁄> <myNews type="cat" ⁄>

corner
 
corner
<myQuote order="random" ⁄> <myQuote order="random" ⁄>

corner
 
corner
<myPhoto order="random" ⁄> <myPhoto order="random" ⁄>

<pedrocorreia.net ⁄>
corner
 
corner
<myAdSense ⁄> <myAdSense ⁄>

corner
 
corner
<myVisitorsMap ⁄> <myVisitorsMap ⁄>

corner
 
 

<Exemplo de como carregar um ficheiro XML no Flash ⁄ >




clicks: 16977 16977 2006-10-07 2006-10-07 goto mySnippets mySnippets actionscript  Download  Bookmark This Bookmark This



O objectivo deste snippet é tentar dar um exemplo simples de como carregar informação de um ficheiro XML. Existe cada vez uma maior necessidade de tornar o Flash "dinâmico", ou seja, ler certos conteúdos dinâmicamente. Como por exemplo temos as imagens, se tivermos um swf com 20 imagens torna-se um pouco pesado (mesmo nos dias que correm que a banda larga está cada vez mais implantada) e existe mesmo a forte probabilidade de dessas X imagens, poucas ou até mesmo nenhuma ser vista, é aí que poderão entrar os conteúdos dinâmicos (neste meu exemplo o xml, mas também poderão ser usados txt, php, asp, etc, etc). Os conteúdos são carregados consoante se verifique a sua necessidade.

nota: sugiro que consultem o meu snippet de como gerar xml dinâmicamente, esse exemplo poderá ser adaptado a este caso.

Ficheiro XML que o flash irá ler e a partir do qual irá construir toda a informação. Claro que a estrutura não terá de ser necessariamente esta, porém o restante código é baseado nesta mesma. O encoding é o UTF-8, penso que o Actionscript têm alguns problemas com outros encodings e como tal recomendo que usem sempre este.
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xml>
  3. <pedrocorreia.net>
  4. <work titulo="Primeiro Trabalho" data="2006">
  5. <imagem url="imagem1.jpg" />
  6. <imagem url="imagem2.jpg" />
  7. </work>
  8.  
  9. <work titulo="Segundo Trabalho" data="2004">
  10. <imagem url="imagem3.jpg" />
  11. <imagem url="imagem4.jpg" />
  12. </work>
  13.  
  14. </pedrocorreia.net>
  15. </xml>



Class Portfolio que irá armazenar todas as informações necessárias que são provenientes do XML, deverá estar num ficheiro chamado Portfolio.as.
nota: recomendo vivamente consultem informação respectiva as classes do Actionscript, mas para este exemplo esta class é bastante simples e de fácil compreensão.
  1. class Portfolio {
  2. private var titulo:String;
  3. private var data:String;
  4. private var imagens:Array;
  5.  
  6. /**
  7. * Método constuctor da class Portfolio
  8. *
  9. * @param String titulo - titulo do work
  10. * @param String data - data do work
  11. * @param Array imagens - array de imagens
  12. */
  13. function Portfolio (titulo:String, data:String, imagens:Array) {
  14. this.titulo = titulo;
  15. this.data = data;
  16. this.imagens = imagens;
  17. }
  18.  
  19. /**
  20. * Obter titulo do work
  21. *
  22. * @return String
  23. */
  24. function getTitulo ():String {return this.titulo;}
  25.  
  26. /**
  27. * Obter data do work
  28. *
  29. * @return String
  30. */
  31. function getData ():String {return this.data;}
  32.  
  33. /**
  34. * Obter imagem
  35. *
  36. * @param int posição do array
  37. * @return Array
  38. */
  39. function getImagem (pos:Number):Array {return this.imagens[pos];}
  40.  
  41. /**
  42. * Obter número de imagens
  43. *
  44. * @return int
  45. */
  46. function getNumImagens ():Number {return this.imagens.length;}
  47. }



Este código deverá estar "dentro" do Flash; ou então poderão criar um ficheiro à parte e depois no Flash fazendo então o #include "nome_do_ficheiro_a_parte.as".
Neste exemplo existem duas funções, o loadInformacoes e o showImagem.

O loadInformacoes consiste em ler o ficheiro xml e armazená-lo para memória para ser usado posteriormente, tomem em atenção as variaveis "no" e "work", a variável "no" vai andar no ficheiro até se posicionar no 1º trabalho (se optarem por uma estrutura diferente da que eu utilizo, terão de modificar esta variável, pois esta mesma vai ser usada por outras variáveis), a variável "no" pode ser vista como um atalho, se por exemplo esta não existisse para obtermos o work teriamos de fazer x.firstChild.firstChild.childNodes (grande combóio de código já devem estar a pensar), colocando o "apontador" do no directamente no x.firstChild.firstChild, irá facilitar muito o código, tanto na compreensão como na leitura

O loadImagem, como o próprio nome indica irá carregar uma imagem pretendida para um determinado movieclip. É tão somente um exemplo do que poderá ser feito com a informação do xml, poderiamos também ter funções para mostrar outras quaisquer informações.
  1. /**
  2. * Carregar informações
  3. *
  4. * @param String xml_file - nome do ficheiro
  5. */
  6. _global.loadInformacoes = function (xml_file:String) {
  7.  
  8. var x = new XML (); //criar o objecto
  9. x.ignoreWhite = true; //necessário para que o ficheiro xml possa ser lido correctamente
  10. x.load (xml_file); //carregar ficheiro
  11. x.onLoad = function (success) { //o ficheiro foi carregado com sucesso
  12. var no = x.firstChild.firstChild; //vamos posicionar o "cursor" no <xml><pedrocorreia.net>
  13. var work = no.childNodes; //vamos ler todos os nós desse work
  14. arrInformacoes = new Array (); //criação do array onde vão ser armazenados os objectos
  15. for (var i:Number = 0; i<work.length; i++) {
  16. var imagens = work[i].childNodes; //visto que um work pode ter várias imagens, vamos querer percorrer essas imagens todas
  17. var portfolio = new Portfolio (work[i].attributes.titulo, work[i].attributes.data, imagens); //criação do objecto portfolio
  18. arrInformacoes.push (portfolio); //adicionar ao array o objecto
  19. }
  20. };
  21. };
  22.  
  23. /**
  24. * Mostrar imagem de um trabalho especifico
  25. *
  26. * @param int - indice da imagem
  27. * @param int - indice da imagem
  28. * @param MovieClip - movieclip onde será¡ visualizada a imagem
  29. */
  30. _global.showImagem = function (idxWork:Number, idxImagem:Number, mc:MovieClip) {
  31. var img:String = arrInformacoes[idxWork].getImagem (idxImagem).attributes.url; //obter o url da imagem
  32. mc.loadMovie (img); //efectuar o load da imagem
  33. };



Qualquer dúvida/ erro no código estejam à vontade para entrar em contacto comigo.









clicks: 16977 16977 2006-10-07 2006-10-07 goto mySnippets mySnippets actionscript  Download  Bookmark This Bookmark This