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

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

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
По умолчанию Какой-то странный TextFeld.

Здравствуйте коллеги.
Первый раз сталкиваюсь с таким глюком. У меня есть два текстовых поля, одно для ввода, второе для вывода сообщений. Я делаю следующее. Ввожу текст в инпут, далее по кнопке передаю его для вставки в новое поле. Перед этим обрезаю все не значащие символы в начале и конце сообщения. Далее полученный текст вставляется с последующей установкой TextFormat. При этом если в строке которую я передаю присутствуют символы переноса строки, у меня наблюдается смещение добавляемого текста, а старый текст затирается почему то. При этом формат текста тоже начинает плыть. Вот код при вставке который обрабатывает строку:
Код AS3:
			var pattern:RegExp = /^\s*|\s*$/g;
			msgTxt = msgTxt.replace(pattern, '');
Вот так я этот текст вывожу в TextField с именем tf
Код AS3:
				var msg:Message = RStore.read(ChatConst.MSG_RECEIVE);
				var textFormat:TextFormat = new TextFormat();
				var idx:int = tf.length - 1 ;
				var s:String;
				if (msg.type == MessageType.SIMPLE) {
					textFormat.underline = false;
					textFormat.color = 0x004000;
					textFormat.bold = true;
					s = msg.nickName + ': ';
					tf.appendText(s);
					tf.setTextFormat(textFormat, idx, tf.length - 1);
					idx = tf.length - 1;
					textFormat.color = 0x000040;
					s = msg.text + "\n";
					tf.appendText(s);
					tf.setTextFormat(textFormat, idx, tf.length - 1);
				}
				if (msg.type == MessageType.SYSTEM) {
					s = msg.nickName + ': ' + msg.text + "\n";
					textFormat.color = 0xFF0000;
					textFormat.underline = true;
					tf.appendText(s);
					tf.setTextFormat(textFormat, idx, tf.length - 1);
				}
			}
Кто знает подскажите в чем может быть причина и как с этим бороться. Оба текстовых поля одинаковые, разница только в том что одно динамическое, а второе для ввода. Шрифты используются встроенные.
Забыл уточнить, fla в CS5, тип поля классический, а для компиляции использую проект FlashDevelop с подключением swc с данным текстовым полем
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ


Последний раз редактировалось SunShadow; 24.10.2010 в 23:48.
Старый 24.10.2010, 23:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Не знаю, что подсказать. autoSize там, multiline посмотрите.
P.S. перед вторым if else можно воткнуть )

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Не знаю, что подсказать. autoSize там, multiline посмотрите.
P.S. перед вторым if else можно воткнуть )
autosize отвечает за подгонку размеров текстового поля на сколько я помню, а не за его внутреннее содержимое. Тем более поле очень большое, и текст туда умещается свободно. Многострочность влкючена(без переносов). А постскриптум не критично пока
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 25.10.2010, 00:01
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
autosize отвечает за подгонку размеров текстового поля на сколько я помню, а не за его внутреннее содержимое.
Текст мог не влезать, от этого видна последняя строчка. Следовало заметить, всё таки)
\n это один символ, но он может распознаться, а "\n" - уже два. Я не силён в рэгэкспах, по сути ничего дельного наверно не подскажу. Пойду-ка я.)

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
При этом если в строке которую я передаю присутствуют символы переноса строки...
Если в тексте встречается символ \r, то попробуй заменить его на \n.

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
В справке по TextField написано что \n и \t распознаются как один символ.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
C appentText() баги наблюдались, если использовался символ \r.

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Попробовал вот так
Код AS3:
var r:RegExp = /\r/;
s = msg.text + "\n";
tf.appendText(s.replace(r,"\n"));
Эффекта никакого(
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

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

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Цитата:
Сообщение от SunShadow Посмотреть сообщение
Попробовал вот так
Код AS3:
var r:RegExp = /\r/;
s = msg.text + "\n";
tf.appendText(s.replace(r,"\n"));
Эффекта никакого(
может быть у вас там не один \r?
Код AS3:
while (text.indexOf("\r") != -1) 
  text = text.replace("\r","\n");
__________________
Блог, Twitter
Брюзга.

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Да действительно, надо было удалять все а не только первый) Спасибо дельное замечание) только гораздо проще сделать так
Код AS3:
var r:RegExp = /\r/g;
И цикл будет не нужен

Добавлено через 52 секунды
Всем спасибо за помощь, теперь все функционирует как положено. Если кому то понадобится моя помощь, чем смогу ...)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

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

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

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


 


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


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