Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   TextFormat для текстового поля типа INPUT (http://www.flasher.ru/forum/showthread.php?t=155762)

niks_13 10.05.2011 01:30

TextFormat для текстового поля типа INPUT
 
Доброй ночи всем. Проблема в следущем: INPUT поле отказывается обрабатывать TextFormat. Может я что-то не то делаю? Причём trace мне возвращает 50, хотя шрифт не становится 50-м. С DYNAMIC полем таких проблем не возникало.
Код AS3:

var tfCross:TextField = new TextField();
    tfCross.type = TextFieldType.INPUT;
    tfCross.width = tfCross.height = tfCross.x = tfCross.y = 100;
    tfCross.border = true;
    tfCross.maxChars = 10;
 
var tftCross:TextFormat = new TextFormat();
    tftCross.size = 50;
    tfCross.setTextFormat(tftCross);                       
addChild(tfCross);
trace(tftCross.size);


bav 10.05.2011 02:05

Прочитайте в хелпе про TextField.setTextFormat() и TextField.defaultTextFormat.

niks_13 10.05.2011 12:43

bav
Почитал, нашёл, допёр. Спасибо =)

Итак решение:
вместо
Код AS3:

tfCross.setTextFormat(tftCross);

должно быть:
Код AS3:

tfCross.defaultTextFormat = tftCross;

Добавлено через 7 часов 36 минут
А как насчёт параметра, к-рый позволяет задавать расстояние между буквами? Как его задать?
P.S. help читал - не понял. Здесь нуждаюсь в реальном примере реализации.

surlac 10.05.2011 22:19

Цитата:

Сообщение от niks_13 (Сообщение 995192)
... задавать расстояние между буквами?


Через стандартный TextFormat можно сделать так:
Код AS3:

var tf:TextField = new TextField();
var tformat:TextFormat = tf.defaultTextFormat;
tformat.letterSpacing = <VALUE>; // Ваше значение
tf.text = "Using TextFormat";
tf.setTextFormat(tformat);
addChild(tf);

Если вдруг понадобится TLF (у него намного шире функциональность чем у TextFormat и FTE), то для спейсинга можно сделать следующее:
Код AS3:

public class TLFTest extends Sprite
{   
    public function TLFTest()
    {   
        var tf:TextFlow = new TextFlow(TextFlow.defaultConfiguration);
        var para:ParagraphElement = new ParagraphElement();
        var span:SpanElement = new SpanElement();
        span.text = "Using TLF";
        para.addChild(span);
        tf.addChild(para);
        var tftlf:TextFlowTextLineFactory = new TextFlowTextLineFactory();
        tftlf.compositionBounds = new Rectangle(0, 0, 300, 300);
        var tlf:TextLayoutFormat = new TextLayoutFormat(tf.format);
        tlf.trackingLeft = <VALUE>; // Ваше значение
        tlf.trackingRight = <VALUE>; // Ваше значение
        tf.format = tlf;
        tftlf.createTextLines(clb, tf);                   
    }
 
    public function clb(txLine:TextLine):void
    {
        addChild(txLine);
    }


goodguy 10.05.2011 22:44

Цитата:

Через стандартный TextFormat можно сделать так:
А короче будет передать это значение прямо в конструктор TextFormat ;)

niks_13 10.05.2011 22:47

surlac
Сделал по 1-ому варианту:
Код AS3:

tfCross.letterSpacing = 20;

Хотя сам пробовал так делать и почему-то ошибка была, а вот Ваш код тупо скопипастил и вуаля - всё красиво и работает.
Спасибо)

goodguy
Тоже вариант, но что-то я в help'е не видел такого, ладно гляну повнимательнее. Спасибо.

Wolsh 11.05.2011 00:08

Цитата:

что-то я в help'е не видел такого
Потому что в конструкторе TextFormat этого параметра нет, для него есть сеттер.

niks_13 11.05.2011 08:19

Wolsh
Простите, что для него есть? О0

goodguy 11.05.2011 08:44

Сеттер

Функция вида
Код AS3:

public function set letterSpacing(value:int):void {
    _letterSpasing = value;
}

Вызывается как обычная публичная переменная

niks_13 11.05.2011 13:37

Теперь понял)

Добавлено через 25 часов 32 минуты
Есть у кого-нибудь идеи как отформатировать INPUT поле таким образом, чтобы оно было вида как, скажем, в винде, когда IP в настройки сетевухи вбиваем? В Delphi это maskEdit называется вроде бы. То бишь имеем строку INPUT, maxChars = 10. Значит может вводить 10 символов в любом порядке. Ну как в ''Поле Чудес'' горизонтальный кроссворд.


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

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