Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   auto-read (http://www.flasher.ru/forum/showthread.php?t=169152)

Flablex 28.09.2011 05:50

auto-read
 
Подскажите, пожалуйста, как сделать чтобы текст с применением HTML-форматирования появлялся по одной букве.
Как это сделать для обычного текста с помощью charAt() я знаю, но появилась необходимость выделять слова в тексте.

Код AS1/AS2:

txt.htmlText="<u>myVariable</u> - это имя созданной вами переменной.";

Нужно, чтобы каждая буква появлялась с заданным ей форматированием:
myVari
myVariable - это имя созданной вами переменной.

Подскажите решение или альтернативу:confused:

stantler 28.09.2011 07:21

Код AS1/AS2:

var str:String = "<u>myVariable</u> - это имя созданной вами переменной.";
txt.htmlText = "";
txt.html = true;
var len:Number = str.length;
var i:Number = 0;
while (i<len)
{
  var char = str.charAt(i);
  // Если попался символ начала тэга, то ищем конец тэга и все, что между ними добавляем.
  if (char == "<")
  {
      var index = str.indexOf(">",i);
      char = str.substring(i,index);
      // И переходим за символ конца тэга.
      i = index;
  }
  txt.htmlText += char;
  i++;
}


mooncar 28.09.2011 07:54

Красиво, только наверное, для постепенного вывода не while, а что-то типа onEnterFrame или setInterval нужно?
И нужно учесть теги полностью, чтобы текст выводился согласно html-форматированию.
Вот тут как раз сложность - нужно анализировать для каждого выводимого символа , между какими тегами он заключен и выводить его соответственно...

Flablex 28.09.2011 09:52

Вложений: 1
Это не совсем то что мне надо.
Размещаю исходник, дабы показать как это примерно должно выглядеть(прошу сильно не пинать).
Желательно ответ тоже с исходником.

stantler 29.09.2011 11:04

Цитата:

Сообщение от mooncar (Сообщение 1035486)
Красиво, только наверное, для постепенного вывода не while, а что-то типа onEnterFrame или setInterval нужно?
И нужно учесть теги полностью, чтобы текст выводился согласно html-форматированию.
Вот тут как раз сложность - нужно анализировать для каждого выводимого символа , между какими тегами он заключен и выводить его соответственно...

Да, я думал насчет setInterval, просто решил ради примера сделать так.

А в чем именно сложность тэгов? Ведь текст появляется слева на право, если встречается тэг, то его полностью и добавляем + один следующий символ. Т.к. тег не закрыт, то он будет применяться ко всем остальным символам, пока его не закроют или пока другой тэг не перекроет.

mooncar 29.09.2011 11:32

Вложений: 1
Я не сразу сообразил, что флеш нормально умеет обрабатывать незакрытые теги.

Однако, в том виде, который вы привели, код не выводится так, что будет работает html-форматирование.
Тому причиной, если я не ошибаюсь, то, что свойство htmlText необходимо применять к текстовому полю сразу целиком.

Вот так будет работать:
Код AS1/AS2:

var str:String = '<u>myVariable</u> — это имя созданной вами переменной.';
var strToPrint:String = '';
txt.htmlText = '';
txt.html = true ;
var len:Number = str.length ;
var i:Number = 0;
 
this.onEnterFrame = function()
{
  var char = str.charAt(i);
  // Если попался символ начала тэга, то ищем конец тэга и все, что между ними добавляем.
  if (char == '<')
  {
      var index = str.indexOf('>', i);
      char = str.substring(i, index + 1);
      // И переходим за символ конца тэга.
      i = index;
  }
  strToPrint += char;
  txt.htmlText = strToPrint;
  i++;
};


stantler 29.09.2011 12:51

Цитата:

Сообщение от mooncar (Сообщение 1035636)
Тому причиной, если я не ошибаюсь, то, что свойство htmlText необходимо применять к текстовому полю сразу целиком

Насчет этого не знал. Спасибо

Flablex 29.09.2011 18:08

Большое спасибо за помощь, это как раз то что надо!

dark256 29.09.2011 18:14

Что характерно - такой вывод текста нафик никому не нужен...
Если текста много - то это юзера будет бесить и раздражать. Если мало - проще тупо маской сделать ручками...


Часовой пояс GMT +4, время: 16:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.