获取输入文本字段AS3插入位置(X,Y)? [英] Get caret position (x, y) in input TextField AS3?

查看:252
本文介绍了获取输入文本字段AS3插入位置(X,Y)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要让我的输入文本框插入符的位置。我并不需要设置的位置,我需要得到插入符号的当前位置。能不知道这一点,它的驾驶我疯了!

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆