我认为您正在寻找的是textField.autoSize
参数。它使文本字段范围缩小到文本的大小(否则它具有默认的高度/宽度,无论它包含的文本如何)
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
var textField:TextField = new TextField();
textField.autoSize = TextFieldAutoSize.LEFT;
textField.text = "your text"; //set this AFTER autoSize
您还可以将 textField 的宽度设置为矩形的宽度。或者放弃 autosize 属性并手动将文本框的高度/宽度设置为矩形的高度/宽度,尽管这会截断任何不适合的文本。
文本字段上总是有一些填充。获取实际文本的确切边界可能很棘手(尽管有可能)。一种更简单的方法是仅屏蔽您的文本框。
如果你的矩形是用图形类绘制的,你可以这样做:
var rectangle:Sprite = new Sprite();
rectangle.graphics.beginFill(0xFF0000);
rectangle.graphics.drawRect(0,0,100,100);
addChild(rectangle);
var myMask:Shape = new Shape();
myMask.graphics.copyFrom(rectangle.graphics);
rectangle.addChild(myMask);
var textField:TextField = new TextField();
textField.width = rectangle.width;
textField.height = rectangle.height;
textField.mask = myMask;
rectangle.addChild(textField);
您可以做的另一种选择是在您的事件侦听器中,检查目标是否是文本框并退出该函数。(如果您使用此方法,请确保您的文本字段的 mouseEnabled 属性为 true(默认))
function rectangleClickHandler(e:Event):void {
if(e.target == myTextField) return;
//rest of your code
}