Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Лишний пробел при вставке html кода в textfield (http://www.flasher.ru/forum/showthread.php?t=175586)

Omar2002 20.02.2012 20:01

Лишний пробел при вставке 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> флешь сама добавляет пробел. Я так понимаю это происходит в сеттере, может как-то его прооверрайдить?
Есть у кого-нить идеи на эту тему или может готовые решения?

MikroAcse 20.02.2012 20:05

А тебе это так важно?

Ладно, а ты заметил, что:
Цитата:

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

<IMG SRC="dev/data/data/images/gallery/3.jpg">
?

Omar2002 20.02.2012 22:58

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

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

Wolsh 20.02.2012 23:12

Цитата:

Да это так важно, т.к. в текстфилде можно курсором залезть в этот пробел и начать печатать 2-ым кеглем.
Печатать? Что-то я не заметил чтобы Вы устанавливали тип поля INPUT.

Omar2002 21.02.2012 00:22

Это тестовый код - чтобы не выкладвывать кучу исходников. Добавление строки:
Код AS3:

tf1.type = TextFieldType.INPUT;

Ничего не меняет с точки зрения озвученной проблемы.

Wolsh 21.02.2012 01:01

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

Omar2002 21.02.2012 21:16

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

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

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

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


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

Wolsh 21.02.2012 23:38

"Баг", ага. Сам собой происходит, никто не знает откуда))))))) Сами собой добавляются теги. Да все они прекрасно знают, костыль очередной.
Цитата:

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

public override function set htmlText(value:String):void
{
        super.htmlText = value;
        // И?
}

Цитата:

Еще попробую отлавливать событие попадания курсора в такой пробел - может получится что-то вроде защиты от дураков сделать.
То есть удалить картинку, нажимая Backspace, не получится?))
Нет, правда, Вы меня извините, но картинки в текстфилде это от слишком свежего кокаина адобовцев расперло. Я еще понимаю TLF, там хоть как-то законно все. А с этим чудом один раз столкнулся и решил что проще самому разбивать на блоки чем шаманить с бубном ради такой сомнительной радости. К счастью, у меня задачка была на три порядка проще, чем WYSIWYG. Удачи.


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

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