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

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

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

Регистрация: Oct 2007
Сообщений: 45
По умолчанию Лишний пробел при вставке html кода в textfield

Добрый день. Не могу победить одну проблему с textfield:

Код AS3:
package {
    import flash.display.Sprite;
    import flash.text.StyleSheet;
    import flash.text.TextField;
 
    public class TextField_text extends Sprite {
        public function TextField_text() {
 
			var tf1:TextField = createCustomTextField(10, 10, 400, 22);
			tf1.condenseWhite = true;
            tf1.htmlText = '<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><A HREF="http://yandex.ru" TARGET=""><IMG SRC="dev/data/data/images/gallery/3.jpg" /></A></FONT></P>';
			trace(tf1.htmlText);
        }
 
        private function createCustomTextField(x:Number, y:Number, width:Number, height:Number):TextField {
            var result:TextField = new TextField();
            result.x = x;
            result.y = y;
            result.width = width;
            result.height = height;
            addChild(result);
            return result;
        }
    }
}
В результате трейсится такой текст:
Цитата:
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><A HREF="http://yandex.ru" TARGET=""><IMG SRC="dev/data/data/images/gallery/3.jpg"> </A></FONT></P>
Т.е. перед </A> флешь сама добавляет пробел. Я так понимаю это происходит в сеттере, может как-то его прооверрайдить?
Есть у кого-нить идеи на эту тему или может готовые решения?

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

Регистрация: Feb 2012
Сообщений: 1,540
А тебе это так важно?

Ладно, а ты заметил, что:
Цитата:
<IMG SRC="dev/data/data/images/gallery/3.jpg" />
Поменялось на:
Цитата:
<IMG SRC="dev/data/data/images/gallery/3.jpg">
?

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

Регистрация: Oct 2007
Сообщений: 45
Да это так важно, т.к. в текстфилде можно курсором залезть в этот пробел и начать печатать 2-ым кеглем. Если этого пробела не будет - туба просто не будет возможности попасть курсором мыши или перемещаясь стрелками на клавиатуре.

Слэш я ради эксперимента ставил у тега IMG - эффект что с ним, что без него - одинаковый.

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

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

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

Регистрация: Oct 2007
Сообщений: 45
Это тестовый код - чтобы не выкладвывать кучу исходников. Добавление строки:
Код AS3:
tf1.type = TextFieldType.INPUT;
Ничего не меняет с точки зрения озвученной проблемы.

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

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

Старый 21.02.2012, 21:16
Omar2002 вне форума Посмотреть профиль Отправить личное сообщение для Omar2002 Найти все сообщения от Omar2002
  № 7  
Ответить с цитированием
Omar2002

Регистрация: Oct 2007
Сообщений: 45
Короче погуглил на нерусских сайтах нашел инфу, что это глюк плеера, и похоже еще с 9-ой версии, причем адоб вроде как официально признала этот глюк, но до сих пор его не поофиксила. А в 8-ой версии плеера и при использовании AS2 этого косяка вроде бы нет. Но, поскольку писать надо под AS3 - буду изгаляться.

А на счет оверрайда - пошел читать мануалы - думал что может быть можно в перегружаемом методе вызвать суперовский метод в начале кода.

А вобще - это попытка создать WYSIWYG-редактор на AS3.

В любом случае - спасибо за содействие.


ЗЫ
Еще попробую отлавливать событие попадания курсора в такой пробел - может получится что-то вроде защиты от дураков сделать.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
"Баг", ага. Сам собой происходит, никто не знает откуда))))))) Сами собой добавляются теги. Да все они прекрасно знают, костыль очередной.
Цитата:
А на счет оверрайда - пошел читать мануалы - думал что может быть можно в перегружаемом методе вызвать суперовский метод в начале кода.
Естественно можно. А как это решает проблему?
Код AS3:
public override function set htmlText(value:String):void
{
	super.htmlText = value;
	// И?
}
Цитата:
Еще попробую отлавливать событие попадания курсора в такой пробел - может получится что-то вроде защиты от дураков сделать.
То есть удалить картинку, нажимая Backspace, не получится?))
Нет, правда, Вы меня извините, но картинки в текстфилде это от слишком свежего кокаина адобовцев расперло. Я еще понимаю TLF, там хоть как-то законно все. А с этим чудом один раз столкнулся и решил что проще самому разбивать на блоки чем шаманить с бубном ради такой сомнительной радости. К счастью, у меня задачка была на три порядка проще, чем WYSIWYG. Удачи.
__________________
Reality.getBounds(this);

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

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

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


 


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


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