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

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

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

Регистрация: Aug 2009
Сообщений: 56
По умолчанию Как добавить текст

Здравствуйте, уважаемые знатоки.
Есть задача:
Есть текстовое поле input, и в него грузится текст.
Как сделать, если я хочу выделить какой-нибудь
фрагмент текста, нажать кнопку и этот фрагмент текста
заключался в скобки.

пример:

...равными по модулю...

выделяю "по", нажимаю кнопку

...равными (по) модулю...

Спасибо.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
На сцене кнопка braceButton и поле ввода input_txt
Код:
braceButton.onPress = braceIt;
function braceIt():Void
{
	var str:String = input_txt.text;
	//// начало и конец выделения
	var selIn :Number = Selection.getBeginIndex();
	var selEnd:Number = Selection.getEndIndex();
	Selection.setSelection(0,0);
	//// разрезаем строку на три куска
	var s1:String = str.substring(0, selIn);
	var s2:String = str.substring(selIn, selEnd);
	var s3:String = str.substring(selEnd);
	//// вставляем скобки
	var bracedString:String = s1 + "(" + s2 + ")" + s3;
	input_txt.text = bracedString;
}
__________________
Reality.getBounds(this);

Старый 01.08.2009, 11:57
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

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

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Конечно. Я всегда проверяю. У тебя - нет?))

Добавлено через 5 минут
Вообще то можно было выделение не снимать, а расширить чтобы включало новые скобки или сместить, чтобы остался выделенным тот же текст, теперь внутри скобок... ну это уже как автору захочется.
__________________
Reality.getBounds(this);

Старый 01.08.2009, 12:37
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
braceButton.onPress = braceIt;
 
function braceIt():Void
{
	var str:String = input_txt.text;
	//// начало и конец выделения
	var selIn :Number = Selection.getBeginIndex();
	var selEnd:Number = Selection.getEndIndex();
 
	// XXX У меня фокус слетает, при нажатии на кнопку и получаются
	// такие значения
	trace(Selection.getFocus()); // null
	trace(selIn + "  " + selEnd); // -1  -1
 
	...
}
Не пойму, в чем я туплю. Выложи исходник пожалуйста. (текст мышкой выделяю, перед нажатием на кнопку)


Последний раз редактировалось udaaff; 01.08.2009 в 12:41.
Старый 01.08.2009, 12:53
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

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

Старый 01.08.2009, 12:59
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Я в восьмерке тестировал, поэтому и не получалось. Понятно теперь. Вымучал такой безумный код =) :
Код AS1/AS2:
// на сцене txt и mc
 
txt.onSetFocus = txt_onSetFocusHandler;
txt.onKillFocus = txt_onKillFocusHandler;
 
mc.onRelease = mc_onReleaseHandler;
 
var beginIndex:Number;
var endIndex:Number;
 
function txt_onSetFocusHandler(oldFocus:Object):Void
{
	onMouseUp = onMouseUpHandler;
}
 
function txt_onKillFocusHandler(newFocus:Object):Void
{
	delete onMouseUp;
}
 
function onMouseUpHandler():Void
{
	beginIndex = Selection.getBeginIndex();
	endIndex = Selection.getEndIndex();
}
 
 
function mc_onReleaseHandler():Void
{
	if (beginIndex == endIndex)
		return;
 
	var newString:String = "[" + txt.text.substring(beginIndex, endIndex) + "]";
	txt.replaceText(beginIndex, endIndex, newString);
 
	delete beginIndex;
	delete endIndex;
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Похоже баг такой в восьмерке((
Вот подсократил код)))
Код AS1/AS2:
braceButton.onPress = braceIt;
 
function braceIt():Void
{
	var str:String = input_txt.text;
	//// начало и конец выделения
	var selIn :Number = Selection.getBeginIndex();
	var selEnd:Number = Selection.getEndIndex();
	//// вставляем скобки
	var bracedString:String = "(" + str.substring(selIn, selEnd) + ")";
	input_txt.replaceSel(bracedString)
}
__________________
Reality.getBounds(this);

Старый 01.08.2009, 13:23
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Можно еще проверку добавить:
Код AS1/AS2:
braceButton.onPress = braceIt;
 
function braceIt():Void
{
	var str:String = input_txt.text;
	//// начало и конец выделения
	var selIn :Number = Selection.getBeginIndex();
	var selEnd:Number = Selection.getEndIndex();
 
	if (selIn == selEnd)
		return;
 
	//// вставляем скобки
	var bracedString:String = "(" + str.substring(selIn, selEnd) + ")";
	input_txt.replaceSel(bracedString)
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну да))
А в твой код я внес косметические изменения, ибо в девятке результат его действия некрасив - выделение то остается, только теперь от первой скобки до предпоследней буквы редактируемого отрывка)))) Сделал чтобы выделение "покрывало" все от первой до последней скобки
Код AS1/AS2:
function mc_onReleaseHandler():Void
{
	if (beginIndex == endIndex)
		return;
 
	var newString:String = "[" + txt.text.substring(beginIndex, endIndex) + "]";
	txt.replaceText(beginIndex, endIndex, newString);
	Selection.setFocus(txt);
	Selection.setSelection(beginIndex, endIndex+2);
 
	delete beginIndex;
	delete endIndex;
}
Ну в общем, ты молодец, нашел выход)))
__________________
Reality.getBounds(this);

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

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

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


 


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


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