Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Формулы в текстовом поле - верхние/нижние индексы? (xml/html/css, тег <img>) (http://www.flasher.ru/forum/showthread.php?t=60198)

moksha 05.07.2004 06:50

Формулы в текстовом поле - верхние/нижние индексы? (xml/html/css, тег <img>)
 
проблема в том, что я не смог придумать как в текстовых полях
флеша написать формулы с верхними и нижними индексами!

у меня были следующие варианты:

0) рисовать формулы во флеше целиком неприемлемо, т.к. предполагается, что тексты будут загружаться динамически и готовить их будут люди плохо знакомые с флешом (а именно это должны быть XML-тексты)

1) вставлять сложные элементы формул (которые заготовить заранее) в виде картинок в текстовое поле с html форматированием,
НО !!! флешовый тег <img> очень странно позиционируется в тексте,
а именно align у него может быть либо 'left', либо 'right' и все, то есть картинка может быть прижата либо к левому краю текстового поля, либо к правому!

<img src="smile" align='left' width='18' height='18' hspace='10' vspace='-100'/>

/примечание/ некоторых результатов по позиционированию картинок можно добится если размещать их в самом конце текста слева и манипулировать атрибутами hspace>0 и vspace<0, но это совсем не то что нужно !!!

2) использовать HTML-like форматирование
в html есть такие теги: SUB SUP, с помощью которых можно в некоторой степени сделать то что требуется (неприятность возникает когда к основному символу необходимо дописать над- и под- строчные элементы ОДНОВРЕМЕННО).

К СОЖАЛЕНИЮ :-( флеш эти (SUB,SUP) теги не поддерживает!!!

поэтому

3) можно попробовать воспользоваться таблицами стилей
для XML/HTML форматирования

var style1 = new TextField.StyleSheet();
...
txt.styleSheet=style1;
txt.text=
"M<span class="sub">i</span> = M<sub>i-1</sub><sup>k</sup> + U<sup>i-1</sup>";

в которых определить нехватающие нам SUB SUP либо в виде классов, либо в виде новых тегов (второе удобнее так как занимает меньше места)

sub {
font-family: Arial, Helvetica, sans-serif;
font-size: 8;
font-style:italic;
color: #ff7733;
display: inline
}
sup {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
font-weight: bold;
color: #ffd441;
display: inline

}
.sub {
font-family: Arial, Helvetica, sans-serif;
font-size: 8;
font-style:italic;
color: #889933;
display: inline
}
.sup {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
font-weight: bold;
color: #1Dd441;
display: inline
}

после чего в нашем тексте пользоваться этим как-то так:
формула M<span class="sub">i</span> = M<sub>i-1</sub><sup>k</sup> + U<sup>i-1</sup>;

!!! здесь проблема в том что в подмножестве CSS2, поддерживемом флешовым StyleSheet слыхом не слыхивали о vertical_align, то есть SUB и SUP по прежнему отсутствуют.

Правда с помощью италика и уменьшенного размера шрифтов удалось сделать подстрочник (SUB) более менее приемлемым, но вот надстрочник .... :-(((

Итого: проблема частично решена - для подстрочников
(к тому остается вариант с полностью нарисованными формулами в виде внешних .jpg - но это конечно бред полный )

Поэтому - поможите чем сумеете !!!

PS: и, к стати, насчет тега <img> присутствующего в местном диалекте html - в документации написано, что если дать ему ID
<img src="smile" id="smile" align='left' width='18' height='18' hspace='10' vspace='10'/>
то можно из ActionScripta получить к нему доступ и все такое - так вот - доступ то я получить смог, но вот не атрибутов поменять не обработчика навесить на эти мувиклипы не смог (это я в танку или где???)

Пример (текстовое поле называется o_txt)
trace(_root.o_txt.smile._x); //вот это замечательно все показывает
_root.o_txt._x++; // а вот это ничего не изменяет
_root.o_txt.smile.onPress=doSomething; // ну и это тоже не работает

У кого нибудь получилось?

Xelas Kac 08.07.2004 20:29

Пока писал диплом тоже размышлял о создании аналогичного генератора формул. Пришел к созданию собственного movie-генератора, т.е. когда даешь строку, описывающюю формулу, она разбирается, и из библиотеки соответствующие клипы собираются в формулу. Тут уж хоть интегралы/дроби можно рисовать. На php такие штуки есть, генерят картинки. Я реализовать не успел, да и так оказалось всем до лампочки на проделанную работу :p .

Елё 08.07.2004 20:46

наверное можно фонт свой сделать.
символы которого будут раскологаться вверху/внизу
или поискать, наверняка такой есть
и после этого менять textFormat


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

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