Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FranciscoB

XML + CData

Recommended Posts

Boa tarde,

 

Quem pode me salvar?

 

Preciso que o Flash leia o XMl e interprete os códigos HTML escrito nele.

 

XML

-------------------

 

<?xml version="1.0" encoding="UTF-8"?>
<linhadotempo legenda="Ano de">

 <item>
   <ano>2010 - Março</ano>
<titulo>Título da notícia</titulo>
<texto><![CDATA[Testando.]]></texto> 
<imagem>1850-1930_02_0.jpg</imagem>
<legenda>Legenda da Imagem</legenda>
 </item>
 <item>
<ano>Ano</ano>
<titulo>Título da notícia 2</titulo>
<texto><![CDATA[Texto Texto <a href="http://link">Leia Mais</a>.]]>
</texto>
<imagem>1940_02_0.jpg</imagem>
<legenda>Legenda da Imagem2</legenda>
 </item>
 </linhadotempo>

 

---------------------------

 

AS

 

function loadXML(loaded)
{
   if (loaded)
   {

	xmlNode = this.firstChild;
       _root.decadaArray = [];
       _root.tituloArray = [];
       _root.textoArray = [];
       _root.fotoArray = [];
       _root.legendaArray = [];
       total = xmlNode.childNodes.length;
       trace ("xml carregado");
       for (i = 0; i < total; i++)
       {
           _root.decadaArray[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
           _root.tituloArray[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
           _root.textoArray[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
           _root.fotoArray[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue;
           _root.legendaArray[i] = xmlNode.childNodes[i].childNodes[4].firstChild.nodeValue;
       } // end of for
       _root.legendaDecadas = xmlNode.attributes.legenda;
       trace (_root.legendaDecadas);
       _root.fatorScroll = Math.floor(697 / (total - 1));
       gotoAndStop(2);
   }
   else
   {
       content = "file not loaded!";
   } // end else if
} // End of the function

 

Flash

------------------------------

 

function checaBotoes()
{
   if (total - 2 < praOnde)
   {
       this.setaDireita.desaturador._alpha = 100;
       this.setaDireita.enabled = false;
   } // end if
   if (praOnde == 0)
   {
       this.setaEsquerda.desaturador._alpha = 100;
       this.setaEsquerda.enabled = false;
   } // end if
} // End of the function

function avanca()
{
   this.setaEsquerda.desaturador._alpha = 0;
   this.setaEsquerda.enabled = true;
   ++praOnde;
   anos.anoTexto.text = _root.legendaDecadas + " " + decadaArray[praOnde];
   main.roundedXSlideTo(-710 * praOnde, 3, "easeOutQuint", 0);
   scroller.xSlideTo(11 + fatorScroll * praOnde, 3, "easeOutQuint", 0);
   checaBotoes();
} // End of the function

function volta()
{
   this.setaDireita.desaturador._alpha = 0;
   this.setaDireita.enabled = true;
   --praOnde;
   anos.anoTexto.text = _root.legendaDecadas + " " + decadaArray[praOnde];
   main.roundedXSlideTo(-710 * praOnde, 3, "easeOutQuint", 0);
   scroller.xSlideTo(11 + fatorScroll * praOnde, 3, "easeOutQuint", 0);
   checaBotoes();
} // End of the function

function mexeScroller()
{
   trace ("fatorScroll=" + fatorScroll);
   var _loc2 = Math.ceil(scroller._x / fatorScroll);
   praOnde = _loc2 - 1;
   main.roundedXSlideTo(-710 * praOnde, 3, "easeOutQuint", 0);
   anos.anoTexto.text = _root.legendaDecadas + " " + decadaArray[praOnde];
   if (praOnde == 0)
   {
       setaEsquerda.desaturador._alpha = 100;
       setaDireita.desaturador._alpha = 0;
       setaDireita.enabled = true;
   }
   else if (praOnde == total - 1)
   {
       setaEsquerda.enabled = true;
       setaEsquerda.desaturador._alpha = 0;
       setaDireita.desaturador._alpha = 100;
   }
   else
   {
       setaEsquerda.enabled = true;
       setaDireita.enabled = true;
       setaEsquerda.desaturador._alpha = 0;
       setaDireita.desaturador._alpha = 0;
   } // end else if
} // End of the function


// mascara

main.setMask(mascara);
//

scroller.onPress = function ()
{
   this.stopTween();
   this.startDrag(false, 18, 214, 421, 214);
   scrollaRanking = setInterval(mexeScroller, 100);
};
scroller.onRelease = scroller.onReleaseOutside = function ()
{
   this.stopDrag();
   clearInterval(scrollaRanking);
};
var praOnde = 0;
anos.anoTexto.text = _root.legendaDecadas + " " + decadaArray[praOnde];
checaBotoes();
this.setaEsquerda.desaturador._alpha = 100;
setaEsquerda.enabled = false;
setaDireita.onRollOver = function ()
{
   setaDireita.vai();
};
setaDireita.onRollOut = function ()
{
   setaDireita.volta();
};
setaDireita.onRelease = function ()
{
   avanca();
};
setaEsquerda.onRollOver = function ()
{
   setaEsquerda.vai();
};
setaEsquerda.onRollOut = function ()
{
   setaEsquerda.volta();
};
setaEsquerda.onRelease = function ()
{
   volta();
};
scroller.onPress = function ()
{
   this.stopTween();
   this.startDrag(true, 11, 305, 697, 305);
   scrollaRanking = setInterval(mexeScroller, 100);
};
scroller.onRelease = scroller.onReleaseOutside = function ()
{
   this.stopDrag();
   clearInterval(scrollaRanking);
};

// variaveis do xml

for (i = 0; i < total; i++)
{
   main.attachMovie("casoAno", "casoAno" + i, i, {_x: 0 + 710 * i, _y: 0});
   main["casoAno" + i].contentMain.tituloTexto.wordWrap = true;
   main["casoAno" + i].contentMain.tituloTexto.autoSize = true;
   main["casoAno" + i].contentMain.texto.autoSize = true;
   main["casoAno" + i].contentMain.texto.wordWrap = true;
   main["casoAno" + i].contentMain.texto.htmlText = textoArray[i];
   trace (textoArray[i]);
   main["casoAno" + i].contentMain.tituloTexto.text = tituloArray[i];

   if (main["casoAno" + i].contentMain.tituloTexto._height > 25)
   {
       diferencaAlturas = main["casoAno" + i].contentMain.tituloTexto._height - 25;
       main["casoAno" + i].contentMain._y = main["casoAno" + i].contentMain._y + diferencaAlturas;
       main["casoAno" + i].maskedView._y = main["casoAno" + i].maskedView._y + diferencaAlturas;
       main["casoAno" + i].maskedView._height = main["casoAno" + i].maskedView._height - diferencaAlturas;
   } // end if
   main["casoAno" + i].foto.loadMovie(fotoArray[i]);
   main["casoAno" + i].anoTexto.text = decadaArray[i];
   main["casoAno" + i].textoDecada.text = _root.legendaDecadas;
   main["casoAno" + i].legendaTexto.text = legendaArray[i];
   if (legendaArray[i] == undefined)
   {
       main["casoAno" + i].legendaTexto.text = "";
   } // end if
} // end of for


 

Tudo funciona normal, apenas as tags em HTML não funciona, aparecer como texto sem serem interpretadas pela animação.

 

SOCORROOOO!

 

Quem puder e quiser ajudar, posso mandar todos os arquivos para você mesmo testar para tentar resolver so mandar e-mail.

 

Obrigado desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu não tenho CS5 ;)

 

Então não abro esses arquivos.

 

Veja o exemplo abaixo:

 

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load("linhadotempo29.xml");

var field:TextField = _root.createTextField("text", 1, 0, 0, 550, 400);
field.html = true;
field.wordWrap = true;

xml.onLoad = function(ok){
if(ok){
	cn = xml.firstChild.childNodes;
	for(var i = 0; i < cn.length; i++){
		field.htmlText += cn[i].childNodes[2].firstChild.nodeValue;
	}
}else {
	trace("Couldn't load the xml file");
}
}

 

Isso é baseado em seu XML

 

O código do CDATA só é valido se você utilizer firstChild.nodeValue caso contrario ele não pega o valor do cdata

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu não tenho CS5 ;)

 

Então não abro esses arquivos.

 

Veja o exemplo abaixo:

 

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load("linhadotempo29.xml");

var field:TextField = _root.createTextField("text", 1, 0, 0, 550, 400);
field.html = true;
field.wordWrap = true;

xml.onLoad = function(ok){
if(ok){
	cn = xml.firstChild.childNodes;
	for(var i = 0; i < cn.length; i++){
		field.htmlText += cn[i].childNodes[2].firstChild.nodeValue;
	}
}else {
	trace("Couldn't load the xml file");
}
}

 

Isso é baseado em seu XML

 

O código do CDATA só é valido se você utilizer firstChild.nodeValue caso contrario ele não pega o valor do cdata

 

Abraços

 

Mil desculpas pela minha incapacidade de conseguir, fiz isso e nada.

 

Salvei o fla no formato do CS4 Clique aqui

 

Obrigado pela ajuda, se precisar de algo em design, pode pedir, flash já não é minha praia (rss)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Linhas que alterei no seu código e funcionou:

main["casoAno" + i].contentMain.texto.html = true;
main["casoAno" + i].contentMain.texto.htmlText = textoArray[i];
main["casoAno" + i].contentMain.tituloTexto.html = true;
main["casoAno" + i].contentMain.tituloTexto.htmlText = tituloArray[i];

 

c213E.as

 

Eu só troquei o arquivo que carrega o xml pelo seu proprio... uma vez q a variavel arquivo não estava definida.

 

Ahh detalhes

<b> não funciona a não ser que a font que você der embed tenha o formato bold... e você deveria colocar <strong> em vez de <b>

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Linhas que alterei no seu código e funcionou:

main["casoAno" + i].contentMain.texto.html = true;
main["casoAno" + i].contentMain.texto.htmlText = textoArray[i];
main["casoAno" + i].contentMain.tituloTexto.html = true;
main["casoAno" + i].contentMain.tituloTexto.htmlText = tituloArray[i];

 

c213E.as

 

Eu só troquei o arquivo que carrega o xml pelo seu proprio... uma vez q a variavel arquivo não estava definida.

 

Ahh detalhes

<b> não funciona a não ser que a font que você der embed tenha o formato bold... e você deveria colocar <strong> em vez de <b>

 

Abraços

 

 

Desulpe a demora para responder (gripe em alta).

 

So retorneu para o trampo agora após o almoço, parei para reparar na dica da fonte embed que precisa suportar o formato bold por exemplo, então sem fazer nenhuma alteração no código, apenas solicitei para aumentar a fonte e mudar a cor no html dentro do CDATA, funcionou!

 

Ai, cai em outro problema, que quando defino um link tipo <a href="#">Link</a>, o clique não funciona (cara ser nub é f***)

 

Existe alguma configuração especifica para ele interpretar como link no texto? Porque mudando tamanho, cor de fonte está indo normal ( <font size="+20" color="#FF0000">teste</font>).

 

Valeu, pelo menos agora só falta resolver o problema do link.

 

Obrigado pela paciência

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi sua pergunta.

Se você coloca um link normal dentro do flash ele abre a página desejada que você colocou sem problema nenhum... você inclusive pode apontar esse link para um iframe ou alguma coisa qualquer que desejar ou mesclar com javascript.

 

A unica coisa que não acontece é de ele ficar com cor azul... pois uma vez que não existe CSS dentro do flash na interpretação do HTML ele não tem a cor padrão azul para link e roxa para links visitados.

Mas isso daria para você alterar com:

<font color="#00F"><a href="#">link</a></font> 

Sem problema algum.

 

Aqui se eu coloco um link ele abre normalmente em meu browser... talvez você não esteja testando ele corretamente em ambiente web ou local... se você só der ctrl + enter as vezes o seu flash poderá bloquear o link se ele não tiver sido configurado no publish and settings (opções de publicação) para acessar a internet.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.