Flash AS3 e XML: Maneira de corrigir quebras de linha no HTMLText que usa tags no XML?
-
26-09-2019 - |
Pergunta
Estou importando texto em um arquivo XML e estou usando o HTMLText para tentar manter algum estilo com tags. Eu tenho a fonte de face regular e ousada incorporada, e o negrito funciona bem. O problema é que ele anuncia espaços em torno das palavras em negrito como um recuo de parágrafos e depois faz um quebra de linha depois delas. O que está acontecendo, existe uma maneira de consertar?
fromxmlText.htmlText = theXML.contenttext;
Se eu puxar o texto de um arquivo txt, ele funcionará bem, mas retirá -lo de um arquivo XML, causando formatação descolada. Lil 'ajuda?
Solução
Para adicionar html ao xml, você deve usar CDATA Caso contrário, o HTML é considerado parte do documento XML.
por exemplo
<root>
<someHtml><![CDATA[I can contain<br />html tags]]></someHtml>
<somePlainText>I cannot contain html tags since they will be
seen as XML nodes</somePlainText>
</root>
Verifique também que você está salvando seus arquivos XML com terminações da linha UNIX e codificadas como UTF-8. Se você estiver usando terminações de linha do Windows (\r\n
) Em seguida, o Flash tende a dobrar as linhas de espaço. Seu editor deve permitir que você especifique os finais da linha.
Outras dicas
Eu estava importando um feed RSS dinâmico em um anúncio meu flash que tinha tags HTML incorporadas. Eu estava tendo o mesmo problema. Eu usei Regex para encontrar e substituir. Aqui está a função que eu estava usando. Você pode usar meu código regex lá para fazer a mesma coisa. Parece que estávamos tendo o mesmo problema. Espero que isto ajude:
função parserover_feature (rover_feature: xml): void {
var s:String = rover_feature.items.item[0].article;
s = s.replace(/(?:<br>)+/gi, '<br>');
s = s.replace(/\n/g, '');
container.info_txt.htmlText = s
//trace (s);
}
É difícil dizer sem ver seu XML, mas tente mexer com o Propriedades XML globais especialmente ignorewhitespace. Dependendo das extremidades da sua linha, você também pode precisar retirá -las antes de colocar o texto no campo de texto.
Se você estiver incorporando a XML, verifique se está usando tags CDATA para mostrar o código pré -formado; caso contrário, estará emitindo o conteúdo de vários nós no XML.
Vejo Escolas W3 para mais informações.
Verifique também se o seu campo de texto está definido como multiline
Antes de definir seu textfield.htmltext = xml com
ou seja
var myText:TextField = new TextField();
myText.multiline = true;
myText.htmlText = (your xml node with the <br/ >);
addChild(myText);
Espero que isto ajude.