Текстовое поле AS3 не может выбрать цвет с помощью ColorPicker только для выбранного текста - PullRequest
0 голосов
/ 07 сентября 2011

Я создаю текстовый редактор и хочу, чтобы пользователи могли выбирать только часть текстового поля и изменять цвет. Проблема, с которой я сталкиваюсь, заключается в том, что ColorPicker получает фокус (я предполагаю), а текстовое поле теряет свой «выбор».

Все примеры редактирования текста показывают изменение цвета всего текстового поля. Что не совсем то, что я хочу.

Буду признателен за любую помощь / понимание.

1 Ответ

1 голос
/ 07 сентября 2011

Выясните, что вызывает потерю выделения в текстовом поле (например, может ли это быть щелчок по компоненту палитры цветов?). Затем получите selectionBeginIndex и selectionEndIndex из текстового поля до того, как это произойдет, и сохраните его в постоянной переменной (например, член класса).

Когда пользователь выбирает цвет, используйте setTextFormat() для изменения цвета, передавая сохраненные начальный и конечный индексы.

Быстрый пример:

var beginIndex : uint;
var endIndex : uint;

function beforeFocusIsLost() : void {
    beginIndex = myTextField.selectionBeginIndex;
    endIndex = myTextField.selectionEndIndex;
}

function whenColorIsPicked() : void {
    var tf : TextFormat;

    tf = new TextFormat();
    tf.color = myColor;

    myTextField.setTextFormat(tf, beginIndex, endIndex);
}

Если вы хотите сохранить выделение, вы также можете сбросить его после того, как цвет был установлен, используя метод TextField.setSelection () .

РЕДАКТИРОВАТЬ: обратите внимание, что если выделение просто скрыто, то, возможно, вы ищете просто TextField.alwaysShowSelection . Попробуйте установить значение true в текстовом поле, и все вышеперечисленное может оказаться излишним.

myTextField.alwaysShowSelection = true;
...