Форум Flasher.ru

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

olexandr 18.03.2012 17:15

Как создать Input-поле для иврита?
 
Всем привет!

В одном проекте поднадобилось сделать поле ввода. Сделал его по старинке, но поскольку приложение для израильского заказчика, то возникла проблема, что символы иврита вводятся в обратном порядке.
Погуглил эту проблему, в частности на этом форуме и выяснил, что ввод справа налево поддерживается только в классах flash.text.engine.* . В принципе, использовать эти классы не проблема - посмотрел хелп, вроде все достаточно понятно. Но не увидел, в классах пакета flash.text.engine ни одного упоминания о type == input.

Поскольку, раньше ни с этим пакетом, ни с ивритом не сталкивался, то немного в растерянности, куда копать дальше?

Если у кого-то есть пример input-поля для иврита, буду премного благодарен.

alatar 18.03.2012 17:40

Во FlashIDE класс TLFTextField.
Во Flex framework все компоненты spark поддерживают TLF.

olexandr 18.03.2012 18:45

Спасибо, уже что-то начинает получаться.
Дальше, такие проблемы:

1.
Код AS3:

var _format:TextLayoutFormat = new TextLayoutFormat();
_format.direction = Direction.RTL;

Но печатаемые буквы все так же появляются справа, единственное отличие, что курсор мерцает не в конце строки, а в начале. Я так понимаю, символы должны появляться слева? Или для кириллицы FP будет автоматически печатать по методу LTR?

2. При использовании TLFTextField, что нужно впихнуть в stage.focus, чтобы можно было сразу печатать?
Я посмотрел, что у TLFTextField достаточно сложная внутрення структура и прямой ссылки непосредственно на TextField нету.

alatar 18.03.2012 18:53

1. У TLFTextField есть собственный direction.
2. Ниразу им не пользовался.
Цитата:

и прямой ссылки непосредственно на TextField нету.
Там вообще TextField не используется.

olexandr 18.03.2012 19:04

1. При использовании TextLayoutFormat, direction у TLFTextField перезаписывается.

2. Про TextField само собой, я имел ввиду какой-либо аналог, который можно передать в stage.focus.
У меня получилось добраться только до TextLine, наследника DisplayObjectContainer.

Ок, спасибо за помощь - подождем, может быть, кто-то еще что либо подскажет.


p.s. Сегодня закончил с этим проектом. Остановился на таком варианте (если кому понадобится):

Код AS3:

private function textDownHandler(e:MouseEvent):void {
    _textLabel = new TLFTextField();
    _textLabel.autoSize = TextFieldAutoSize.LEFT;
    _textLabel.multiline = true;
    _textLabel.type = TextFieldType.INPUT;
    _textLabel.selectable = true;
    _textLabel.border = true;
    _textLabel.embedFonts = true;
    _textLabel.setSelection(0, 0);
    _textLabel.addEventListener(FocusEvent.FOCUS_OUT, textUpHandler);
 
    var _format:TextLayoutFormat = new TextLayoutFormat();
    _format.fontLookup = FontLookup.EMBEDDED_CFF;
    _format.direction = Direction.RTL;
 
    var _flow:TextFlow = _textLabel.textFlow;
    _flow.hostFormat = _format;
    _flow.flowComposer.updateAllControllers();
 
    addChild(_textLabel);
 
    _flow.interactionManager.setFocus();
}
 
private function textUpHandler(e:FocusEvent):void {
    _textLabel.removeEventListener(FocusEvent.FOCUS_OUT, textUpHandler);
 
    if (_textLabel.text) {
        _textLabel.type = TextFieldType.DYNAMIC;
        _textLabel.selectable = false;
        _textLabel.border = false;
    } else {
        removeChild(_textLabel);
    }
 
    _textLabel = null;
}



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

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