![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Т.к. на эту задачу у меня уйдет полдня наверное, а сдавать надо было вчера Поэтому пришлось действовать грубо и не так изящно, как можно было бы через хтмл-кодирование...Но если придется взяться опять, то поделюсь конечно, тем более ноу-хау примерно ясно. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Все же вышло!!!
styleObj = new StyleSheet();
css_str = "A:hover {color:#990000;}" //, A:active {color:#FF0000;}";990000 0764AF
styleObj = new TextField.StyleSheet();
styleObj.parseCSS(css_str)
test.wordWrap = true;
test.multiline=true
//test.autoSize = "right";
test.condenseWhite = true;
test.html = true;
test.embedFonts=true
test.styleSheet = styleObj;
function loadXML(_file)
{
doc = new XML();
...
doc.onLoad = function () {
...
test.htmlText =doc.firstChild....nodeValue // Основной текст
arrWord=[]
text0=test.htmlText
text1=test.text
letFind=true
index=0
while(letFind){
posTag=text0.indexOf('<a href="asfunction:showLTip,',index) // найден тег
if (posTag==-1){ // тегов нет, конец цикла
break;
}
posAct=posTag+30
posWord=text0.indexOf('"><u>',posAct) // начало ссылки
posEndWord=text0.indexOf('</u></a>',posWord) //конец ссылки
findWord=text0.substring(posWord+5, posEndWord) // ссылка (видимая)
myFind=text1.indexOf(findWord)
arrWord.push({pos:myFind ,word:findWord, link:text0.substring(posAct-1, posWord)})
index=posEndWord+8
}
}
}
}
создается массив с индексами ссылок и текстом при наведении на них onMouseMove=function(){
//var showWind=false
for (var i=0; i<arrWord.length; i++){
my_fmt = test.getTextFormat(arrWord[i].pos,(arrWord[i].pos+arrWord[i].word.length));
if (my_fmt.color==10027008){
trace(arrWord[i].word)
if (!showWind){
showLTip(arrWord[i].link)
showWind=true
}
break;
}
}
if (i==arrWord.length){
hideLTip()
showWind=false
}
}
Поиск расчитан на одну уникальную ссылку в тексте (если она повторяется то надо изменить алгоритм). Забивается в xml стандартно: |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Блин, без агвы не разберешься... Ну спасибо, изучим!
![]()
__________________
Reality.getBounds(this); |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Этот пример я сделал где-то в мае
import TextField.StyleSheet;
//// обычный цвет и цвет при наведении на ссылку
var css:String = "A {color: #000000;}, A:HOVER {color: #000001;}, .test {color: #FF0000;}";
var style:StyleSheet = new StyleSheet ();
style.parseCSS (css);
var txt:TextField = this.createTextField ("txt", 0, 10, 10, 200, 200);
txt.html = true;
txt.multiline = true;
txt.wordWrap = true;
txt.styleSheet = style;
txt.border = true;
//// пример текста
txt.htmlText = "<font size='20'>ABC <a href='#'>DEF</a> GHI <a class='test' href='#'>JKL</a></font><br>";
//// описываем ссылки
var arrayLink:Array = [];
//// pos - позиция первого символа ссылки
//// valOver - цвет до наведения
//// valOut - цвет при наведении (всегда совпадает с A:HOVER)
//// msg - произвольный текст
arrayLink.push ({pos:5, valOver:0x000001, valOut:0x000000, msg:"ссылка 1"});
arrayLink.push ({pos:13, valOver:0x000001, valOut:0xFF0000, msg:"ссылка 2"});
this.onEnterFrame = function () {
for (var i:Number = 0; i < arrayLink.length; i++) {
var obj:Object = arrayLink[i];
var fmt:TextFormat = txt.getTextFormat (obj.pos, obj.pos + 1);
if (!obj.d) {
obj.d = obj.valOut;
} else if (fmt.color != obj.d) {
if (fmt.color == obj.valOver) {
trace (obj.msg + " RollOver");
}
if (fmt.color == obj.valOut) {
trace (obj.msg + " RollOut");
}
obj.d = fmt.color;
}
}
};
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
Возможно ли узнать, над какой строкой от начала тексфилда находится в данный момент мышиный курсор? Без тупого перелопачивания ВСЕГО содержимого по буковке на каждый onMouseMove/onEnterFrame.
Спасибо. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, это невозможно.
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
Эх.. Ограниченная функциональность текстового поля. Печально.
В Директоре вот например можно.. Теперь вместо одного поля со строками придется плодить пачки текстфилдов в мувиклипах по одной строчке в каждом. И все динамически.. Печально и обидно... |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 230
|
У меня-то весь текст загиперлинкован.. Все строки... Длина этих текстов неизвестна.
Дело в том, что я почти все сделал в одном поле. Вернее, сделал. Вычисляется высота строчки при присвоении, применяется CSS, смотрится разница, округляются величины, смещения и с точностью до пикселя регистрируется ролловер на строчку. Но проблема в том, что на Маках вся эта музыка нафиг сползает и все вычисления накрываются... Так что приходится переделывать.. Хотя с самого начала подозревал, что косяки полезут с таким подходом... Последний раз редактировалось iNils; 05.09.2007 в 19:58. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Ariel, а что именно на маках изменяется?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|