Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.08.2007, 17:43
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 21  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от Wolsh
PS chingachgoog, ты уж поделись со всеми технологией, когда получится, ОК?
Боюсь, наврядли.
Т.к. на эту задачу у меня уйдет полдня наверное, а сдавать надо было вчера Поэтому пришлось действовать грубо и не так изящно, как можно было бы через хтмл-кодирование...
Но если придется взяться опять, то поделюсь конечно, тем более ноу-хау примерно ясно.

Старый 16.08.2007, 20:24
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 22  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Все же вышло!!!

Код:
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
			}
        } 
    }
}
Здесь читается текст из xml-ки и вставляется в текстовое поле test
создается массив с индексами ссылок и текстом при наведении на них

Код:
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
	}
}
Собственно движок поиска изменения состояния ссылки и выведения окошка (запуск функции showLTip с передачей параметра - текста ссылки) или закрытие окошка (функция hideLTip())

Поиск расчитан на одну уникальную ссылку в тексте (если она повторяется то надо изменить алгоритм).
Забивается в xml стандартно:

Код:
<![CDATA[ .....<a href="asfunction:showLTip,Исономия – равенство гражданских прав."><u>исономии</u></a>....]]>

Старый 17.08.2007, 09:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 23  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Блин, без агвы не разберешься... Ну спасибо, изучим!
__________________
Reality.getBounds(this);

Старый 17.08.2007, 15:05
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 24  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: 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;
		}
	}
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.09.2007, 03:11
Ariel вне форума Посмотреть профиль Отправить личное сообщение для Ariel Найти все сообщения от Ariel
  № 25  
Ответить с цитированием
Ariel
 
Аватар для Ariel

Регистрация: Dec 2006
Сообщений: 230
Возможно ли узнать, над какой строкой от начала тексфилда находится в данный момент мышиный курсор? Без тупого перелопачивания ВСЕГО содержимого по буковке на каждый onMouseMove/onEnterFrame.

Спасибо.

Старый 05.09.2007, 03:15
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 26  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, это невозможно.

Старый 05.09.2007, 03:36
Ariel вне форума Посмотреть профиль Отправить личное сообщение для Ariel Найти все сообщения от Ariel
  № 27  
Ответить с цитированием
Ariel
 
Аватар для Ariel

Регистрация: Dec 2006
Сообщений: 230
Эх.. Ограниченная функциональность текстового поля. Печально. В Директоре вот например можно..
Теперь вместо одного поля со строками придется плодить пачки текстфилдов в мувиклипах по одной строчке в каждом. И все динамически.. Печально и обидно...

Старый 05.09.2007, 10:06
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 28  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от Ariel
Возможно ли узнать, над какой строкой от начала тексфилда находится в данный момент мышиный курсор? Без тупого перелопачивания ВСЕГО содержимого по буковке на каждый onMouseMove/onEnterFrame.

Спасибо.
А весь текст по буковке не перелопачивается: только гиперлинки (не по буковке, а строкой целиком) и до первого найденного изменения цвета.

Старый 05.09.2007, 19:40
Ariel вне форума Посмотреть профиль Отправить личное сообщение для Ariel Найти все сообщения от Ariel
  № 29  
Ответить с цитированием
Ariel
 
Аватар для Ariel

Регистрация: Dec 2006
Сообщений: 230
У меня-то весь текст загиперлинкован.. Все строки... Длина этих текстов неизвестна.

Дело в том, что я почти все сделал в одном поле. Вернее, сделал. Вычисляется высота строчки при присвоении, применяется CSS, смотрится разница, округляются величины, смещения и с точностью до пикселя регистрируется ролловер на строчку. Но проблема в том, что на Маках вся эта музыка нафиг сползает и все вычисления накрываются... Так что приходится переделывать.. Хотя с самого начала подозревал, что косяки полезут с таким подходом...


Последний раз редактировалось iNils; 05.09.2007 в 19:58.
Старый 05.09.2007, 22:16
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 30  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Ariel, а что именно на маках изменяется?

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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