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

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

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

Регистрация: May 2009
Сообщений: 33
По умолчанию Положение курсора в текстовом поле

Здраствуйте уважаемые товарищи! На сцене текстовое поле. При нажатии на него мувик под текстовым полем прнимает координаты _xmouse, как бы указывая на расположение курсора(каретки) в текстовом поле. Далее мышку например сдвинули на пару букв и опять кликнули на текстовом поле и мувик опять должен принять координаты х мыши, как бы указывая на каретку. Собственно как такое моджно реализовать. Пробовал менять фокус и различные другие приемы. Можеть есть аналог SetSelection в AS2

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Врядли такое можно реализовать стандартными способами. Чтоб получилось всё граматно, нужно узнавать ширину символов в текстовом поле + расстояние между ними. Таких инструментов нет.

Но выход есть всегда !
извращенский способ #1:
Можно жестоко извратиться и сделать своё убер универсальное текстовое поле, в котором каждая буква будет вводиться в отдельный контейнер. Тем самым можно будет вычислять кординаты для корретки. Тоесть изобрести велосипед, но по русский !

извращенский способ #2:
Чтобы узнавать кординаты для корретки - создать пустой контейнер, в нём текстовое поле. Затем Циклом, перебираем все буквы в слове, вставляя их в контейнер, записывая, складывания их общей ширины. поочереди.
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 27.01.2011 в 16:51.
Старый 27.01.2011, 20:56
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 3  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Неточный извращенский способ 3:
Код AS1/AS2:
var tf = this.createTextField("tf", 1, 100, 100, 100, 20);
tf._width = 300;
tf._height = 300;
tf.multiline = true;
tf.wordWrap = true;
tf.type = "input";
tf.text = "Здраствуйте уважаемые товарищи! На сцене текстовое поле. При нажатии на него мувик под текстовым полем прнимает координаты _xmouse, как бы указывая на расположение курсора(каретки) в текстовом поле.";
 
var center = this.createEmptyMovieClip("center", 2);
center.lineStyle(1,0xFF0000);
center.moveTo(-5,0);
center.lineTo(5,0);
center.moveTo(0,-5);
center.lineTo(0,5);
 
this.onEnterFrame = function() {
	if (eval(Selection.getFocus()) == tf) {
		var origText = tf.text;
		var origML = tf.multiline;
		var origWW = tf.wordWrap;
		var position = Selection.getCaretIndex();
		tf.text = tf.text.substr(0, position);
 
		var w = tf.textWidth;
		var h = tf.textHeight;
		var tformat = tf.getTextFormat();
		var metrics_1 = tformat.getTextExtent(tf.text, tf._width);
		center._y = tf._y+h-metrics_1.descent-metrics_1.ascent;
 
		tf.multiline = false;
		tf.wordWrap = false;
		var metrics_2 = tformat.getTextExtent(tf.text, tf._width);
		if (tf.textWidth>metrics_2.width) {
			center._x = tf._x+tf.textWidth%metrics_2.width;
		} else {
			center._x = tf._x+tf.textWidth;
		}
		tf.text = origText;
		tf.multiline = origML;
		tf.wordWrap = origWW;
 
	}
};
__________________
hauts.ru

Старый 27.01.2011, 21:28
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Метод SetSelection в AS2 есть.
Например:
Код AS1/AS2:
this.createTextField("txt", 99, 10, 10, 200, 30);
txt.type = "dynamic";
txt.text = "this is my text";
 
this.onEnterFrame = function  () 
{
	var cp:Number = Selection.getBeginIndex();
	Selection.setSelection(cp, cp + 1);
 
};
__________________
Идите первым!


Последний раз редактировалось mooncar; 27.01.2011 в 21:32.
Старый 28.01.2011, 10:20
BLOOD585 вне форума Посмотреть профиль Отправить личное сообщение для BLOOD585 Найти все сообщения от BLOOD585
  № 5  
Ответить с цитированием
BLOOD585

Регистрация: May 2009
Сообщений: 33
Спасибо большое извращенского способо 3 вполне хватило)))))

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Обращайтесь
__________________
Дети не должны знать о своих родителях

Старый 28.01.2011, 14:15
BLOOD585 вне форума Посмотреть профиль Отправить личное сообщение для BLOOD585 Найти все сообщения от BLOOD585
  № 7  
Ответить с цитированием
BLOOD585

Регистрация: May 2009
Сообщений: 33
По умолчанию ))

Итак возникла новая проблема)))

Чем длиннее текст тем больше отклонение, причем эта ошибка только у меня, в вашем примере все отлично работает! Может быть это из за шрифта?

Вот выложил исходник.
Вложения
Тип файла: rar 1.rar (104.9 Кб, 29 просмотров)

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Нет, у автора сево кода тот-же косяк.

Вечерком попробую свой вариант набрать.
__________________
Дети не должны знать о своих родителях

Старый 29.01.2011, 22:50
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 9  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Про ошибку знаю, у меня она тоже проявляется. Но вот как сделать лучше — пока не решил.
__________________
hauts.ru

Старый 30.01.2011, 12:06
BLOOD585 вне форума Посмотреть профиль Отправить личное сообщение для BLOOD585 Найти все сообщения от BLOOD585
  № 10  
Ответить с цитированием
BLOOD585

Регистрация: May 2009
Сообщений: 33
Более менее решил проблему так:

Код AS1/AS2:
center._x = tf._x+tf.textWidth-tf.textWidth*0,07;
Чем больше ширина текста, тем больше отнимаем от координат. Для небольшого текстового поля, как у меня, ничего не заметно)))

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

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

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


 


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


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