我正在创建一个文本编辑器,我希望用户只能选择部分文本字段并更改颜色。我遇到的问题是ColorPicker获得了焦点(我猜)并且文本域失去了它的“选择”。
所有文本编辑示例都显示整个文本字段更改颜色。这不完全是我想要的。
任何帮助/见解都将不胜感激。
答案 0 :(得分:1)
找出导致文本字段选择丢失的原因(例如,是否可以点击颜色选择器组件?)。然后在发生之前从文本字段中获取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;