Индекс ActionscriptПроблема
-
22-08-2019 - |
Вопрос
Когда я создаю TextField в AS3 с многострочным значением true и приравниваю текст к следующему:
"Привет\р хола"
Я не могу получить позицию индекса с помощью функции 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
Решение
После ответа Микко я попробовал:
var textField:TextField = addChild(new TextField()) as TextField;
textField.multiline = true;
textField.text = "test \r test";
trace("result>" + textField.text.indexOf("\r"));
Этот код отслеживает:
result>5
...Как и ожидалось.
Если это по-прежнему не работает для вас, сначала попробуйте найти другой символ, кроме , если это работает, попробуйте также найти .Возможно, перевод строки как-то изменится.(какая у вас ОС?)
Другие советы
Мне кажется, вы пытаетесь получить индекс TextField вместо интересующего вас TextField.text.
trace(txt.text.indexOf("\r"));
мог бы работать немного лучше.
Итак, обо всем по порядку,
Вы не создали экземпляр своего текстового поля, вы просто сделали ссылку.
Во-вторых, indexOf доступен не классу TextField, а классу String, поэтому используйте следующее, и у вас больше не будет проблем.У меня это отлично прослеживается.
var txt:TextField = new TextField();
addChild(txt);
txt.multiline = true;
txt.text = "Hola \r hola";
trace(txt.text.toString().indexOf("\r"));
По сути, Тео все правильно сказал, но я подумал, что попробую сделать это немного более ясным.
Надеюсь, что я смогу помочь.Также я бы посоветовал проверить регулярные выражения, которые позволяют легко найти символы пробелов или любой другой шаблон, который вы только можете придумать.