Pergunta

Quando eu criar um TextField em AS3 com o conjunto de várias linhas para verdadeiro e igualar o texto para dizer:

"Hola \ r hola"

Eu sou incapaz de recuperar a posição de índice \ r utilizando a função indexOf, ele sempre retorna -1

Alguém sabe o que estou fazendo de errado?

var txt:TextField;
txt.multiline = true;

txt.text = "Hola \r hola";

//txt now renders fine with the line break

trace(txt.indexOf("\r")); //Returns -1, should return the valid index of \r in txt
Foi útil?

Solução

Após a resposta de Mikko eu dei-lhe uma tentativa:

var textField:TextField = addChild(new TextField()) as TextField;
textField.multiline = true;

textField.text = "test \r test";

trace("result>" + textField.text.indexOf("\r"));

Este código traços:

result>5

... Assim como esperado.

Se ainda não funciona para você, tente primeiro procurar outro personagem do que \ r, se isso funciona também tentar procurar \ n. Talvez o avanço de linha se transforma de algum modo. (Que OS você está?)

Outras dicas

Parece-me que você está tentando obter o índice do TextField em vez do TextField.text que você está em interessado.

trace(txt.text.indexOf("\r"));

poderia trabalhar um pouco melhor.

A aprovação assim que as primeiras coisas primeiro,

Você não tem instanciado o seu campo de texto, você simplesmente fez uma referência.

Em segundo lugar, indexOf, não está disponível para a classe TextField, mas para a classe String, então use o seguinte e você não terá mais problemas. Ele traça para fora bem para mim.

var txt:TextField = new TextField();
addChild(txt);
txt.multiline = true;
txt.text = "Hola \r hola";

trace(txt.text.toString().indexOf("\r"));

Theo tem essencialmente correto, mas eu pensei que eu iria tentar um torná-lo um pouco mais claro.

Espero que eu poderia ajudar. Também gostaria de sugerir verificar em expressões regulares, que têm maneiras fáceis de encontrar caracteres de espaço em branco ou qualquer outro padrão que você pode pensar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top