Ir para conteúdo

POWERED BY:

Arquivado

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

MarcelaK

[Resolvido] SWF + XML - Alinhamento do Texto

Recommended Posts

Tenho um swf com uma caixa de texto html. Carrego essa caixa com um xml (de um nó só, é usado apenas para um texto) que é alterado frequentemente.

Quando o texto não cabe na caixa de texto, é criada outra, automaticamente..

Meu problema acontece quando o '<p' está no fim de uma caixa e o 'align="center">' no começo da outra.

O texto não fica alinhado, aparece a sujeira 'align="center">' e não é dada uma quebra de linha depois do </p>.

Já tentei usar apenas <center> ou <align="center"> (ao meu ver, o problema está no espaço entre o p e o align), mas não funcionou.

 

Alguém tem alguma sugestão para resolver isso?

 

Obrigada desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cansei de fazer sites puxando codificação do XML em HTML

Melhor metodo é usar o CDATA

<data>
<texto>
<[!CDATA[ <p align="center">Meu texto alinhado </p> 
<p align="left">Meu texto a esquerda</p> 
<p align="right">Meu texto a direita </p>
<p align="justify">Meu texto justificado</p>]]>
</texto>
</data>

 

var my_text:TextField = this.createTextField("my_text", 1, 0,0,200,20);
my_text.html = true;

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.load('data.xml');
xml.onLoad = function(ok){
if(ok){
 var total = xml.firstChild.childNodes.lenght;
 for(var i:Number = 0; i < total; i++){
  my_text.text = xml.firstChild.childNodes.childNodes;
 }
}else {
 trace("xiiii deu erro");
}
}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o CDATA eu já estou usando.

Meu problema acho que é no SWF, quando o '<p ' fica separado do 'align="center">', cada um em uma caixa de texto.

A tag funciona bem no início da primeira caixa ou no meio de qualquer caixa, o problema é no final da caixa, quando quebra a tag (no espaço).

 

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre-nos o que você está fazendo com exemplos...

 

Pois não entendi o problema... o que to entendendo é isso que você faz:

<data>
<texto>
<[!CDATA[ <p MEU TEXTO LALALALA align="center">Meu texto alinhado </p> 
<p MEU TEXTO LALALALA align="left">Meu texto a esquerda</p> 
<p MEU TEXTO LALALALA align="right">Meu texto a direita </p>
<p MEU TEXTO LALALALA align="justify">Meu texto justificado</p>]]>
</texto>
</data>

Em vez de:

<data>
<texto>
<[!CDATA[ <p align="center">Meu texto alinhado </p> 
<p align="left">Meu texto a esquerda</p> 
<p align="right">Meu texto a direita </p>
<p align="justify">Meu texto justificado</p>]]>
</texto>
</data>

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, estou usando exatamente isso:

 

<data>
<texto>
<[!CDATA[ <p align="center">Meu texto alinhado </p> 
<p align="left">Meu texto a esquerda</p> 
<p align="right">Meu texto a direita </p>
<p align="justify">Meu texto justificado</p>]]>
</texto>
</data>

Meu problema é justamente este espaço que existe entre o '<p' e o 'align="left">'.

Como meu texto começa em uma caixa de texto e continua em outra, às vezes o '<p' fica no fim de uma caixa de texto e o 'align="left">' no começo da outra (o que não acontece com outras tags que uso, pois não tem espaço no meio da tag [<b></b><i></i><u></u><br></p>,etc]).

 

O texto 'align="left"' fica visível, o texto não fica alinhado e não é dada a quebra depois do </p> (pois "não existe" a tag <p align="left">).

 

Avise se ainda não tiver explicado direito..

Obrigada mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmmmmm

 

A questão então é o espaço que você ta dando de caracteres para cada texto...

 

E implicando com tags..

 

Por exemplo se eu tiver um texto com 250 caracteres e meu texto contiver no começo <p> e no final </p>

 

e minha caixa de texto limita os caracteres por caixa com 255 caracteres os p vão quebrar

 

pois vai dar exatos 257 caractes

 

Então a ultima tag vai ficar </ em vez de ficar </p>

 

Como está seu código que está abrindo os textos?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quebra do </p> não aconteceria, pois ele nunca quebra palavras no meio assim..

No caso do <p align="..."> só acontece por causa do espaço entre o p e o align.

Dei um print screen no swf para ficar mais fácil de visualizar.

 

O SWF com o texto:

 

Imagem Postada

 

O XML:

<?xml version="1.0" encoding="utf-8"?>
<sm>
  <item><![CDATA[Virginius  A narrativa de um advogado 



<p align="center">[...]</p> Quem é Pai de todos?

 É um fazendeiro destas paragens, o velho Pio. O povo dá-lhe o nome de Pai de todos, porque o velho Pio o é na verdade.

 Bem dizia eu que há romance no fundo!... Que faz esse velho para que lhe dêem semelhante título?

 Pouca cousa. Pio é, por assim dizer, a justiça e a caridade fundidas em uma só pessoa. Só as grandes causas vão ter às autoridades judiciárias, policiais ou municipais; mas tudo o que não sai de certa ordem é decidido na fazenda de Pio, cuja sentença todos acatam e cumprem. Seja ela contra Pedro ou contra Paulo, Paulo e Pedro submetem-se, como se fora uma decisão divina. Quando dous contendores saem da fazenda de Pio, saem amigos. É caso de consciência aderir ao julgamento de Pai de todos. 

 Isso é como juiz. 



<p align="center">[...]</p><b>Fonte</b>
ASSIS, Machado de. Virginius  A narrativa de um advogado. Rio de Janeiro: Fundação Biblioteca Nacional. Disponível em: http://www.dominiopublico.gov.br. Acesso em 14-06-2009.
]]></item>
</sm>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria assim:

<?xml version="1.0" encoding="utf-8"?>
<sm>
  <item><![CDATA[Virginius  A narrativa de um advogado 



<p align="center">[...]</p> Quem é Pai de todos?

 É um fazendeiro destas paragens, o velho Pio. O povo dá-lhe o nome de Pai de todos, porque o velho Pio o é na verdade.

 Bem dizia eu que há romance no fundo!... Que faz esse velho para que lhe dêem semelhante título?

 Pouca cousa. Pio é, por assim dizer, a justiça e a caridade fundidas em uma só pessoa. Só as grandes causas vão ter às autoridades judiciárias, policiais ou municipais; mas tudo o que não sai de certa ordem é decidido na fazenda de Pio, cuja sentença todos acatam e cumprem. Seja ela contra Pedro ou contra Paulo, Paulo e Pedro submetem-se, como se fora uma decisão divina. Quando dous contendores saem da fazenda de Pio, saem amigos. É caso de consciência aderir ao julgamento de Pai de todos. 

 Isso é como juiz. 



<br /><p align="center">[...]</p><b>Fonte</b>
ASSIS, Machado de. "Virginius  A narrativa de um advogado". Rio de Janeiro: Fundação Biblioteca Nacional. Disponível em: [url="http://www.dominiopublico.gov.br."]http://www.dominiopublico.gov.br.[/url] Acesso em 14-06-2009.
]]></item>
</sm>
Em vez de dar enter entre uma linha ou outra

 

Você tem que por o <br /> pois se você der um enter normal ele vai ficar uma linha mto grande.. e pode dar problemas

 

E você sempre pode colocar o condenseWhite = true no xml

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O <br /> não alterou nada..

Eu acho que tem chance de até dar mais problema depois, pois é mais uma tag com espaçamento dentro.

 

O condenseWhite = true eu acho que tem. Não tenho certeza, é algo com White..

Vou verificar.

 

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom cara

 

Você poderia mostrar o ActionScript para gente?

Pois o que ta quebrando seu XML é o action... deve ter algo nele que ta fazendo esse bug!

 

Pois tags HTML são renderizadas e desaparecem!!!! não contam como se fossem caracteres...

 

Então tem como você passar o que ta fazendo? assim poderei ajudar melhor.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

var paginator:Paginator = new Paginator();
//
atualSM = 0;
paginaInicial = 0;
//
function SaibaMais(a) {
	attachMovie("SM_mc", "SaibaMais_mc", 51, {_x:315, _y:240});
	Arrasta_Clip(false);
	a != null ? _root.atualSM=a : n;
	_root.paginaInicial = 0;
	SMAberto = true;
}
//
MovieClip.prototype.CarregaPag_SM = function(myPagina) {
	this.n_pag.text = myPagina;
	this.my_txt.embedFonts = true;
	this.my_txt.html = true;
	this.my_txt.htmlText = myTextos;
	this.my_txt.selectable = false;
	this.my_txt.htmlText = _root.paginator.pages[myPagina-2] != undefined ? _root.paginator.pages[myPagina-2] : "";;//getPage(myPagina-2);
};
//
my_lv = new XML();
my_lv.ignoreWhite = true;
my_lv.onLoad = function(success) {
	if (success) {
		//
		myTextos = this.firstChild.firstChild.firstChild.nodeValue;
		//
	}
	_root.paginator.createPages(_root.myTextos, my_bounds);
	_root.totalPaginas = (_root.paginator.pages.length%2 == 0) ? _root.paginator.pages.length : _root.paginator.pages.length+1;
	my_bounds.text = "";
};
//myXML = "obra_1"
my_lv.load("../xml/"+arq+".xml");

Tenho esse código aqui no meu pc.. (o .fla não está aqui)

Não sei se já ajuda..

Qualquer coisa depois abro o fla e pego mais coisas..

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom realmente ai no código não tem nada relativo a contagem de caracteres.

 

Procura a caixa de texto que tem a instancia: my_txt

 

E veja se nessa caixa de texto ta com limitação de caracteres... provavelmente sim.

Qual font você ta usando?

 

Se eu fosse você tirava o embedFont......

 

E usava um textFormat pois ta dando chabu ai na parte codificação...

 

E pegaria os dados do xml assim:

myTextos = this.firstChild.childNodes.firstChild.nodeValue;

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a demora.

Estou resolvendo o problema. É no fla mesmo.

Meu código está dando um split no espaço e colocando palavra por palavra na caixa de texto, para não acontecer aquilo de quebrar a palavra no meio. Nisso ele separa o <p do align="..">. Estou varrendo o array e quando encontro o <p, jogo ele para o indice seguinte, junto com o align..

 

Obrigada mesmo.

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.