|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2004
Адрес: @ Drum Arena
Сообщений: 146
|
Определение css стиля выбранного текста.
Собсна, есть css, примерно с такой штукой (например):
h1 { color:#ff0000; font-size:24; } подключаем его к текстовому полю, в котором есть хтмлный текст такого рода: <h1>Title</h1> another text <b>blah blah</b> При выделении слова "Title" или части его, нужно что бы вывелся стиль, в котором это слово заключено (в нашем случае, это h1). Спасибо.
__________________
HighLight Studio |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Простого способа нет. А сама задача совсем не простая.
К примеру усложняем задачу, есть текст "<h1><big>Title</big></h1>" и соответсвенно есть два стиля h1, big. И теперь при выборе того же слова, должно выбраться уже два стиля. А что если будет такой тест "<h1>Ti<big>tle</big></h1>"? Опознать сами теги легко, достаточно использовать это текст для создания xml, и сам флеш создаст древовидную структуру. Остается только найти необходимое слово (задача тоже не из простых, взять хотя бы мой второй пример текст, где слово разбито над две части) и поднимаясь по дереву вверх, собрать все теги в которые слово вложено. Последний раз редактировалось iNils; 21.07.2008 в 01:57. |
|
|||||
Регистрация: Jan 2004
Адрес: @ Drum Arena
Сообщений: 146
|
как всё сложно, особенно после приведённого тобою примера. А что если слово находится не просто в теге, а именно в <span>?
<span class="heading">Title</span> облегчает ли это задачу?
__________________
HighLight Studio |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Простой пример, для одноуровневых тегов
var fmt:TextFormat = new TextFormat (); fmt.size = 20; var str:String = "<span class='a1'>Title</span> <span class='a2'>Title2</span> <span class='a3'>Title</span>"; var txt:TextField = this.createTextField ("txt", 0, 100, 100, 0, 0); txt.html = true; txt.border = true; txt.autoSize = true; txt.type = "input"; txt.setNewTextFormat (fmt); txt.htmlText = str; txt.onMouseUp = function () { var p:Number = Selection.getCaretIndex (); if (p > 0) { getClass (str, this.text, p); } }; function getClass (html:String, text:String, p:Number) { var xml:XML = new XML (html); xml.ignoreWhite = true; var node:XMLNode = xml; //trace (node) var str:String = ''; for (var i:Number = 0; i < node.childNodes.length; i++) { var nodeA:XMLNode = node.childNodes[i]; if (nodeA.nodeType == 1) { str += nodeA.firstChild.nodeValue; } else { str += nodeA.nodeValue; } if (str.length >= p) { trace ("Tag : " + nodeA.attributes["class"]); break; } } } Mouse.addListener (txt); |
|
|||||
Регистрация: Jan 2004
Адрес: @ Drum Arena
Сообщений: 146
|
большое спасибо. Теперь буду изучать твой пример.
__________________
HighLight Studio |
|
|||||
Регистрация: Jan 2004
Адрес: @ Drum Arena
Сообщений: 146
|
разобравшись в примере, за который ещё раз спасибо, напросился следующий вопрос. Как применить стиль к выброннуму тексту?
__________________
HighLight Studio |
|
|||||
Регистрация: Nov 2005
Сообщений: 1,155
|
setTextFormat()
А вообще то F1 |
|
|||||
Регистрация: Jan 2004
Адрес: @ Drum Arena
Сообщений: 146
|
setTextFormat() - эт не совсем то. Если брать в расчёт пример iNils'а, то:
к слову Title применён стиль a1, каким бы образом изменить его на a2, например? Или же наоброт, добавить какой-нить текст, со стилем a1. _txt.htmlText += "<span class='a1'>Mega text</span>" не спасает, т.е. само слово Mega text появляется, но стиль к нему не присоеденён.
__________________
HighLight Studio |
|
|||||
Modus ponens
|
import TextField.StyleSheet; var tf:TextField = this.createTextField("tf", 0, 0, 0, 300, 300); var css:StyleSheet = new StyleSheet(); css.parseCSS(".a1{color:#ffff00}.a2{color:#00ffff}"); tf.styleSheet = css; tf.html = true; tf.htmlText = "<span class=\"a1\">This is class a1</span>"; tf.htmlText += "<span class=\"a2\">This is class a2</span>";
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 03:53. |
|
« Предыдущая тема | Следующая тема » |
|
|