Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   InputText внутри форматированного текста (http://www.flasher.ru/forum/showthread.php?t=133076)

Zen 26.11.2009 19:20

InputText внутри форматированного текста
 
Есть задача: "Сделать обучающие тесты на Флэше"

Т.е. есть форматированный текст, в который надо вставлять пропущенные буковки и знаки препинания.
Текст решил сделать HTML форматированным:
Код AS3:

"<P ALIGN='LEFT'><FONT FACE='Times New Roman' SIZE='16' COLOR='#000000' LETTERSPACING='0' KERNING='0'>"
+"<a href='event:teach'><FONT COLOR='#431FD8'><b><u>Прочти или выучи правило.</u></b></FONT></a> Выпиши слова с орфограммой"
+"<br><b>«Буквы <FONT COLOR='#E42612'>е-и</FONT> в окончаниях существительных»</b> и обозначь ее."
+"<br><br>Образец:<i>  1. Как прекрасна земля на рассвете! 2. Я брожу по тропинке в лесу. 3. На белой скатерти стоял букет роз. Выписываю:<FONT COLOR='#E42612'> на рассвете</FONT> (2, пр. п.), <FONT COLOR='#E42612'>по тропинке</FONT> (1, дат. п.),<FONT COLOR='#E42612'> на скатерти</FONT> (3,пр. п.).</i>"
+"<br><br>1. В радост… и печал… не забывайте своих друзей. "
+"<br><br>2. Мы были в театр… на спектакл… . "
+"<br><br>3. В Англи… много музеев."
+"<br><br><a href='event:check'><FONT COLOR='#431FD8'><b><u>Проверь правильность выполнения</FONT></P>"

Но не понял как вместо "..." вставить поля для пользовательского ввода?
Поля можно вставить таким макаром <img src='inputTextField' id='testimage' hspace = '78' vspace = '-4'>, где inputTextField поле для ввода (лежащее в библиотеке), а циферки 78 и -4, подгонка поля для ввода в нужное место, а в ручную каждое поле двигать на х пикселей вправо не вариант....

Вопрос: Может я пошел не тем путем? Что посоветуете? Может есть уже готовые решения?

SamFR 26.11.2009 21:49

Можно использовать TextField.getCharBoundaries(charIndex:int), а поля ввода размещать поверх TextField в соответствии с полученными координатами. При прокрутке или изменении размера поля обновлять. В справке, кстати, пример неплохой есть.

Zen 26.11.2009 22:26

SamFR, премного благодарен!
Это именно то что нужно... я этот метод изначально прочитал и не так понял, я думал что он возвращает прямоугольник описывающий размер символа.

Ещё раз спасибо!!! Блин, пол дня просидел с этой ерундой.

SamFR 26.11.2009 23:13

Не за что :)
Только учтите, что в случае, когда поле покрывает несколько символов, вам придётся вызывать этот метод как минимум два раза – для первого из них и для последнего, и вычислять результирующий прямоугольник как минимальный, содержащий оба полученных. Также придётся решить, что делать в случае, когда символы оказались расположены на разных строках (TextField.getLineIndexOfChar()), либо как этого избежать.

Добавлено через 2 минуты
Да, ещё шрифт тех символов, которые должны быть замещены, нужно сделать моноширинным для того, чтобы введённые символы совпадали по ширине с замещаемыми.


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

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