
Код AS3:
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldType;
import flash.events.KeyboardEvent;
import flash.geom.Rectangle;
import flash.ui.Mouse;
var t:TextField = new TextField();
t.text = "TEXT WITH WIDE CARET HACK :D";
t.x = t.y = 20;
t.width = 500;
t.height = 500;
t.alwaysShowSelection = true;
t.multiline = t.wordWrap = true;
t.defaultTextFormat = new TextFormat('_sans',20);
t.type = TextFieldType.INPUT;
addChild(t);
stage.focus = t;
t.addEventListener(KeyboardEvent.KEY_DOWN,kd);
var CARET:String = String.fromCharCode(1);
function kd(e:KeyboardEvent):void {
t.text = t.text.substr(0, t.length-1);
t.text += CARET;
}
t.text += CARET;
var selected = false;
function addCaret(){
if(selected){
t.setSelection(t.length-1, t.length);
t.selectable = true;
}else{
t.setSelection(t.length,t.length);
t.selectable = false;
}
selected = !selected;
}
setInterval(addCaret, 500);//caret blink time
я вот такой хак придумал, не самый красивый канешн, но может сгодится..
правда, если нужно сохранить функцию выделения текста то скрипт надо доработать.
Добавлено через 3 минуты
Но лучше найти фонт такой, чтобы в нём уже был символ каретка (прямоугольник?) и использовать его, то добавляя то убирая.
еще можно какой-то элемент отрисовывать на место каретки, высчитывая координаты.