Регистрация: Jun 2004
Адрес: Украина, Донецк
Сообщений: 10
|
Формулы в текстовом поле - верхние/нижние индексы? (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; // ну и это тоже не работает
У кого нибудь получилось?
|