あなたが探しているのは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);
実行できるもう1つのオプションは、イベントリスナーで、ターゲットがテキストボックスであるかどうかを確認し、関数を終了することです。(このメソッドを使用する場合は、テキストフィールドのmouseEnabledプロパティがtrue(デフォルト)であることを確認してください)
function rectangleClickHandler(e:Event):void {
if(e.target == myTextField) return;
//rest of your code
}