Jump to content


Photo

Sistema De Notícias Xml Flash


  • Faça o login para participar
9 replies to this topic

#1 Thais Baio

Thais Baio

    12 Horas

  • Usuários
  • 150 posts
  • Sexo:Feminino

Posted 16/09/2008, 13:15

Olá,

seguindo esse tutorial : http://www.augpr.com...com_xml_parte_2

consegui criar um sisteminha de notícias que funciona do jeito que eu queria...

as chamadas das notícias aparecem em um componente list, aparece barra de rolagem quando necessário e tal... e quando essas chamadas sao clicadas abre a noticia completa em um componente textArea...

funcional é...mas usando esses componentes fica tudo mto feio...alguem poderia me ensinar a usar algo que possa ser personalizado (como um movie-clip) no lugar desses componentes feios?

codigo AS:
// Objeto XML
var oXML:XML = new XML();
// Ignorando espaços em branco
oXML.ignoreWhite = true;

// Nossa função que listará os títulos no componente List
function listaTitulos():Void{
   // Nós de <noticias>
   var childs:XMLNode = oXML.firstChild;
   // Número total de nós
   var childTotal:Number = childs.childNodes.length;
   // Para cada nó em childs
   for(var i = 0; i < childTotal; i++){
	  // Nó <noticia>
	  var nodeNoticia:XMLNode = childs.childNodes[i];
	  // Título
	  var nodeTitulo:XMLNode = nodeNoticia.childNodes[0];
	  // Valor do título
	  var titulo:String = nodeTitulo.firstChild.nodeValue;
	  // Adicionando item ao componente List. i será o id desta notícia.
	  noticias_lst.addItem({label:titulo, data:i});
   }
   // Selecionando o primeiro index, no caso, a última notícia
   noticias_lst.selectedIndex = 0;
   // Mostrando a última notícia
   mostraNoticia(0);
}

// Nossa função que irá mostrar a notícia no componente TextArea.
// Ela recebe um parâmetro id do tipo Number que será o identificador da notícia.
function mostraNoticia(id:Number):Void{
   // Nó Notícia referende ao id fornecido
   var nodeNoticia:XMLNode = oXML.firstChild.childNodes[id];
   // Título da notícia - noticia.titulo.conteudo.texto
   var titulo:String = nodeNoticia.childNodes[0].firstChild.nodeValue;
   // Texto da noticia - noticia.texto.conteudo(CDATA).texto
   var texto:String = nodeNoticia.childNodes[1].firstChild.nodeValue;
   // Autor da noticia
   var autor:String = nodeNoticia.childNodes[2].firstChild.nodeValue;
   // Data da noticia
   var data:String = nodeNoticia.childNodes[3].firstChild.nodeValue;
   // Mostrando os valores no componente TextArea
   noticia_txt.text = "<font size='16'><b>" + titulo + "</b></font>";
   noticia_txt.text += "<br />" + texto;
   noticia_txt.text += "-------------------------------------------------------------------------------------";
   noticia_txt.text += "<font size='10'>Publicado por " + autor + " em " + data + "</font>";
}

// Objeto que será o listener do componente List
var evtList:Object = new Object();
/* Evento change. Toda vez que mudarmos o valor do componente, este evento é invocado.
Ele fornece um objeto que é uma referência ao evento, e contém o target e o type do evento,
no caso target vai ser o componente list e type será change. */
evtList.change = function(evt:Object):Void{
   // Mostra a notícia selecionada
   /* target.value contém o valor de data do item selecionado,
   ou seja, o ID da notícia. */
   mostraNoticia(evt.target.value);
}
// Adiciona o EventListener ao componente List
noticias_lst.addEventListener("change", evtList);

// Evento onLoad
oXML.onLoad = function(success:Boolean):Void{
   // Se carregar com sucesso
   if(success){
	  // Se o status do XML for 0, ou seja, nenhum problema.
	  if(oXML.status == 0){
		 // Lista os títulos no componente List
		 listaTitulos();
	  }
	  // Fique � vontade para criar avisos no caso de erros.
   }
}
// Carregando o documento XML
oXML.load("news.xml");

codigo news.xml

<?xml version="1.0" encoding="utf-8"?>
<noticias>
   <noticia>
	  <titulo>Quinta e Última Notícia</titulo>
	  <texto><![CDATA[Um texto de exemplo <i>aqui</i>. Esta é a <a href="#">notícia de número</a> <b>5</b>]]></texto>
	  <autor>Mozart Petter</autor>
	  <data>15/10/2005</data>
   </noticia>
   <noticia>
	  <titulo>Quarta Notícia</titulo>
	  <texto><![CDATA[Um texto de exemplo <i>aqui</i>. Esta é a <a href="#">notícia de número</a> <b>4</b>]]></texto>
	  <autor>Mozart Petter</autor>
	  <data>14/10/2005</data>
   </noticia>
   <noticia>
	  <titulo>Terceira Notícia</titulo>
	  <texto><![CDATA[Um texto de exemplo <i>aqui</i>. Esta é a <a href="#">notícia de número</a> <b>3</b>]]></texto>
	  <autor>Lucas Ferreira</autor>
	  <data>13/10/2005</data>
   </noticia>
</noticias>

Obrigada a todos

#2 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 17/09/2008, 09:48

Na verdade o componente TextArea é um componente que tem uma caixa de texto dinâmica e um scroll.
Você pode jogar o texto em uma caixa de texto dinâmica e usar um scroll personalizado para essa caixa:

Aqui tem um código bacana de scroll para usar.

Aí você joga o texto em uma caixa de texto dinâmica e usa o scroll para rolar as notícias.

Abraços.

pp

#3 Thais Baio

Thais Baio

    12 Horas

  • Usuários
  • 150 posts
  • Sexo:Feminino

Posted 17/09/2008, 10:03

oi Pedro, na verdade nao estou nem me preocupando agora com os scrolls...estou mais preocupada mesmo é em arrumar um jeito de nao usar esses componentes e sim dois mcs no lugar deles...

é tudo que preciso pro momento...mas nao estou sabendo como fazer...
deixo aqui meus arquivos para facilitar...

http://rapidshare.co...4/news.zip.html

preciso mto disso, se puder me ajudar ficarei mto agradecida mesmo...

#4 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 17/09/2008, 12:34

Primeiro de tudo.
Você sabe parsear XML e adicionar clips dinamicamente no Stage baseado no XML?

Porque o que você quer é só uma pilha de botões com um scroll e uma caixa de texto para exibir a mensagem de cada botão desses.
O mais difícil aí é o scroll que já te dei o código. Se mesmo assim você está perdida, seu problema talvez seja mais pra baixo: carregar, entender como o flash trata um XML e como você vai utilizar esses dados. Algo pronto pra você eu não tenho.

Vamos do começo se você quiser. Faça um flash que carregue um xml. Assim que você conseguir, faça uma função que parseie o xml. O próximo passo é vc criar objetos abstratos de dados e jogue-os em um array. Esse último passo eu te ajudo, assim que você tiver completado os passos 1 e 2.
Depois vemos como vamos tratar esses dados que o xml entregou, ok? Eu acho que assim é melhor do que eu perder aqui 1 hora e entregar algo pronto pra você e vc não entender nada do que eu fiz.

Abraços.

pp

#5 Thais Baio

Thais Baio

    12 Horas

  • Usuários
  • 150 posts
  • Sexo:Feminino

Posted 17/09/2008, 13:14

então Pedro, vc viu os arquivos que coloquei o link?

eu tenho pronto tudo isso, mas no tutorial que fiz era utilizando list e textarea...e eu nao queria pq eles sao mto feios e nao tenho liberdade pra personalizar...

queria aproveitar esses arquivos que eu tenho, trocando onde tem componente por um mc com campo de texto dinamico...=/

#6 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 17/09/2008, 13:54

Sinceramente, vc não me entendeu.

A pergunta é: você sabe exatamente como funciona o parser? Se você sabe, basta olhar o método attachMovie que vc vai matar suas dúvidas.
Se vc não sabe exatamente, é melhor começar a rever seu post.

A sequência é:

1. Carregar o XML
2. Criar os objetos de dados para manipular com os clips
3. Criar dinamicamente os botões de cada notícia e associá-los às informações do XML
4. Fazer os métodos de interação do usuário (click nos botões e scroll)
5. Exibir os dados das notícias no campo de texto dinâmico que vc vai criar.

No código que vc me mandou eu até vejo possibilidade de você re-utilziar certas partes, como o carregamento. Outros passos são você que vai ter que escrever, como a construção dos botões e a associação dos dados. É isso que estou te dizendo. Não tem um comando assim "basta colocar na linha 72 a seguinte action que tudo está resolvido". Quando usamos componentes prontos entregamos a ele um grande trabalho. E esse trabalho deve ser feito por nós quando resolvemos customizar a nossa interface.

O que te propus é que você fuja desse tutorial e coloque sua atenção sobre as suas necessidades. Estou também tentando descobrir onde está exatamente sua dificuldade, para tentar ajudar você.

Então volto à minha pergunta: você sabe parsear o xml e criar a pilha de botões?

Abraços.

pp

#7 Thais Baio

Thais Baio

    12 Horas

  • Usuários
  • 150 posts
  • Sexo:Feminino

Posted 17/09/2008, 17:35

eu naõ sei mto bem...com o tutorial entendi td que foi feito...mas sozinha nao saberia fazer...assim como nao saberia converter isso para as coisas que eu quero...por isso vim buscar ajuda achando q nao era algo tao complicado, pois em outro forum me disseram que a pior parte ja estava feita e era relativamente simples isso...

#8 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 18/09/2008, 09:23

Ok, Thais.

Esse final de semana eu faço um exemplo pra você, ok? Aí poderemos discutir como foi feito pra que vc entenda os processos e as fases do código.

Abraços.

pp

#9 Thais Baio

Thais Baio

    12 Horas

  • Usuários
  • 150 posts
  • Sexo:Feminino

Posted 18/09/2008, 11:37

mto obrigada Pedro...

fiz uma tentativa com um amigo e conseguimos isto: http://rapidshare.co...1/news.zip.html

mas ainda está não está abrindo a noticia completa...engasgamos nisso...

Até =)

#10 Igarashi

Igarashi

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:S. J. do Rio Preto / SP

Posted 30/10/2008, 14:03

Thaís,

Gostaria de saber se você conseguiu incrementar o o código de notícias.
Preciso de um código exatamente como este.

Obrigado.




1 user(s) are reading this topic

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

IPB Skin By Virteq