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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2006, 23:53
Andrew_J вне форума Посмотреть профиль Отправить личное сообщение для Andrew_J Найти все сообщения от Andrew_J
  № 1  
Ответить с цитированием
Andrew_J

Регистрация: Aug 2004
Сообщений: 110
Отправить сообщение для Andrew_J с помощью ICQ
По умолчанию Эффект нажатия на слово в тексте, как сделать?

Всем привет, вот пытаюсь придумать такую штуку с текстом.
Есть предложение, состоящее из нескольких строк. Нужно вывести это предложение на экран. Необходимо сделать чтобы при нажатии мышой на какое то из слов это слово выделилось, к примеру другим цветом и надо получить номер слова в предложении на которое произвелось нажатие в какую либо переменную.
Подскажите как тут поступить и какие возможны способы?

зы: текст заранее не известен, есть только массив слов или строка слов разделенных пробелом.

Старый 04.08.2006, 15:59
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 2  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
Сделай не текстовое поле а набор movieclip с единственным словом в нем.
рабей строку на массив и последовательно аттач мувики со следующими друг за другом словами, выдернутыми из массива. Создай в прототипе мувика свойство onPress которое бы выводило номер этого мувика и перекрашивало его в нужный цвет.. Вроде так

Старый 04.08.2006, 17:04
bbexp вне форума Посмотреть профиль Отправить личное сообщение для bbexp Посетить домашнюю страницу bbexp Найти все сообщения от bbexp
  № 3  
Ответить с цитированием
bbexp
 
Аватар для bbexp

Регистрация: May 2006
Адрес: Город О
Сообщений: 169
Если поле - динамическое, со включенным selectable, то можно проверить на какой позиции стоит курсор (объект Selection, метод getCaretIndex).
Потом написать функцию, определяющую какое слово занимает такую позицию. Выяснив слово и определив его начальный и конечный индексы - применить TextFormat для переформатирования слова.

Если selectable = false; - то геморрой обеспечен.
Конечно можно выяснить какой высоты-ширины текстовое поле, какая гарнитура, попытатся определить длину каждого слова исходя из букв, его составляющих, но уверяю - это будет мерзкое занятие.

Тут действительно проще будет составить текст из муви Клипов, и на них уже вешать код.
__________________
Работа * Работы * О работе

Старый 04.08.2006, 17:44
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 4  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
Код:
var txt = 'Всем привет, вот пытаюсь придумать такую штуку с текстом.';
txt += 'Есть предложение, состоящее из нескольких строк. Нужно вывести это предложение на экран. Необходимо сделать чтобы при нажатии мышой на какое то из слов это слово выделилось, к примеру другим цветом и надо получить номер слова в предложении на которое произвелось нажатие в какую либо переменную.';
txt += 'Подскажите как тут поступить и какие возможны способы?';
var _txt = this.createTextField('_txt', 0, 0, 0, 500,null);
_txt.html = true;
_txt.autoSize = true;
_txt.selectable = false;
_txt.wordWrap = true;
var arr = txt.split(' ');
var i = arr.length;
while(i--){
	arr[i] = '<a href="asfunction:trace, '+i+'">'+arr[i]+'</a>';
}
txt = arr.join(' ');
_txt.htmlText = txt;

Старый 04.08.2006, 18:18
amphetamine вне форума Посмотреть профиль Отправить личное сообщение для amphetamine Найти все сообщения от amphetamine
  № 5  
Ответить с цитированием
amphetamine
[+1 13.10.2006]
[+1 13.10.06]
 
Аватар для amphetamine

Регистрация: Sep 2005
Сообщений: 88
KidsKilla всех порвал =)

Старый 04.08.2006, 18:21
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 6  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
Цитата:
Сообщение от amphetamine
KidsKilla всех порвал =)
Код:
function arr2html(arr) {
	var a = arr.concat([])
	var i = a.length;
	while (i--) {
		a[i] = '<a href="asfunction:fun, '+i+'">'+a[i]+'</a>';
	}
	return a.join(' ');
}
function fun(num:String):Void {
	var a:Array = arr.concat([]);
	var n:Number = parseInt(num);
	trace('"'+a[n]+'": '+n)
	a[n] = '<font color="#FF0000">'+a[n]+'</font>';
	_txt.htmlText = arr2html(a);
}
var txt = 'Всем привет, вот пытаюсь придумать такую штуку с текстом.';
txt += 'Есть предложение, состоящее из нескольких строк. Нужно вывести это предложение на экран. Необходимо сделать чтобы при нажатии мышой на какое то из слов это слово выделилось, к примеру другим цветом и надо получить номер слова в предложении на которое произвелось нажатие в какую либо переменную.';
txt += 'Подскажите как тут поступить и какие возможны способы?';
var _txt = this.createTextField('_txt', 0, 0, 0, 500, null);
_txt.html = true;
_txt.autoSize = true;
_txt.selectable = false;
_txt.wordWrap = true;
var arr = txt.split(' ');
_txt.htmlText = arr2html(arr);
дубль2 рвём накуски. =)))


Последний раз редактировалось KidsKilla; 04.08.2006 в 18:46.
Старый 04.08.2006, 18:24
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 7  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Как вариант

Код:
my_array = ["Вот", "такое", "вот", "предложение", "получается", "бла-бла-бла"];
F_createText = function () {
	_root.createTextField("tf", 1, 10, 10, 530, 420);
	with (tf) {
		border = true;
		html = true;
	}
	//
	var len = my_array.length;
	firstIndex = 0;
	lastIndex = 0;
	for (var i = 0; i<len; i++) {
		lastIndex += my_array[i].length+1;
		if (i != 0) {
			firstIndex = lastIndex-my_array[i].length-1;
		}
		tf.htmlText += '<a href=\"asfunction:F_change,'+firstIndex+','+lastIndex+'\">'+my_array[i]+" </a>";
	}
};
F_createText();
//
F_change = function (index) {
	a = index.split(",");
	//
	var str = tf.text.substring(a[0], a[1]);
	tf.replaceText(a[0], a[1], str.toUpperCase());
};
__________________
BestMasterиZация

Старый 04.08.2006, 18:34
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 8  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
Цитата:
Сообщение от KUZEN
Как вариант

Код:
my_array = ["Вот", "такое", "вот", "предложение", "получается", "бла-бла-бла"];
my_array = ("Вот такое вот предложение получается бла-бла-бла").split(' ');

кстати, в одинарных кавычках двойные экранировать не надо...

Старый 04.08.2006, 19:31
Andrew_J вне форума Посмотреть профиль Отправить личное сообщение для Andrew_J Найти все сообщения от Andrew_J
  № 9  
Ответить с цитированием
Andrew_J

Регистрация: Aug 2004
Сообщений: 110
Отправить сообщение для Andrew_J с помощью ICQ
Всё гениальное просто
Не думал, что можно было все так сделать без гемора на пару дней.

Спасибо вам друзья

KidsKilla, расскажи секрет, почему слова начинают нажиматься как кнопки, и что значит эта строчка:
Код:
a[i] = '<a href="asfunction:fun, '+i+'">'+a[i]+'</a>';

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

Регистрация: Nov 2005
Сообщений: 1,155
вот еще накалякал, может подойдет?
Вложения
Тип файла: rar select.rar (30.8 Кб, 83 просмотров)

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

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

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


 


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


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