FranciscoB 0 Denunciar post Postado Maio 26, 2011 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 27, 2011 Esqueceu de colocar: main["casoAno" + i].contentMain.html = true Abraços Compartilhar este post Link para o post Compartilhar em outros sites
FranciscoB 0 Denunciar post Postado Maio 27, 2011 Esqueceu de colocar: main["casoAno" + i].contentMain.html = true Abraços Não funcionou. Olha o source completo para facilitar: Clique aqui Obrigado mesmo, sou nub em flash. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 27, 2011 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
FranciscoB 0 Denunciar post Postado Maio 27, 2011 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 27, 2011 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
FranciscoB 0 Denunciar post Postado Maio 30, 2011 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 31, 2011 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