Индекс ActionScript проблемы - PullRequest
0 голосов
/ 29 марта 2009

Когда я создаю TextField в AS3 с многострочным, установленным в true, и приравниваю текст к:

"Hola \ r hola"

Я не могу получить позицию индекса \ r с помощью функции indexOf, она всегда возвращает -1

Кто-нибудь знает, что я делаю не так?

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

Ответы [ 3 ]

2 голосов
/ 29 марта 2009

После ответа Микко я попробовал:

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

textField.text = "test \r test";

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

Этот код отслеживает:

result>5

... Как и ожидалось.

Если он все еще не работает для вас, сначала попробуйте найти другой символ, чем \ r, если это работает, попробуйте поискать \ n. Возможно перевод строки как-то преобразуется. (на какой вы ОС?)

1 голос
/ 31 марта 2009

Хорошо, так обо всем по порядку,

Вы не создали экземпляр своего текстового поля, вы просто сделали ссылку.

Во-вторых, indexOf недоступен для класса TextField, но для класса String, поэтому используйте следующее, и у вас больше не будет проблем. Это хорошо для меня.

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

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

Тео, по сути, правильно, но я подумал, что постараюсь сделать это немного яснее.

Надеюсь, что смогу помочь. Также я бы предложил проверить регулярные выражения, в которых есть простые способы найти символы пробела или любой другой шаблон, который вы можете придумать.

1 голос
/ 29 марта 2009

Мне кажется, что вы пытаетесь получить индекс TextField вместо TextField.text, который вас интересует.

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

может работать немного лучше.

...