获取输入文本字段AS3插入位置(X,Y)? [英] Get caret position (x, y) in input TextField AS3?
问题描述
我需要让我的输入文本框插入符的位置。我并不需要设置的位置,我需要得到插入符号的当前位置。能不知道这一点,它的驾驶我疯了!
I need to get the position of the caret in my input textfield. I don't need to set the position, i need to get the current location of the caret. Can't figure this out and it's driving me crazy!
推荐答案
检查<一href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#caretIndex"相对=nofollow> Texfield.caretIndex 财产和<一href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#getCharBoundaries%28%29"相对=nofollow> TextField.getCharBoundaries()方法的文档。它实际上是容易的,但它变得棘手时,该字段为空或下一个字符是一个空的/新行。
Check the Texfield.caretIndex property and TextField.getCharBoundaries() method in documentation. It's actually easy but it gets tricky when the field is empty or the next char is a empty/newline.
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldType;
import flash.events.KeyboardEvent;
import flash.geom.Rectangle;
var t:TextField = new TextField();
t.x = t.y = 20;
t.width = 200;
t.height = 100;
t.multiline = t.wordWrap = t.border = true;
t.defaultTextFormat = new TextFormat('_sans',20);
t.type = TextFieldType.INPUT;
addChild(t);
stage.focus = t;
t.addEventListener(KeyboardEvent.KEY_DOWN,kd);
function kd(e:KeyboardEvent):void {
if (!e.ctrlKey) return;
var car:int = t.caretIndex;
var rect:Rectangle = t.getCharBoundaries(car);
if (rect == null) {
trace('caret:'+car,'need to calculate this possibility')
} else {
trace('caret:'+car,rect,'(relative to textfield)');
}
}
这篇关于获取输入文本字段AS3插入位置(X,Y)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!