为什么我不能从Text组件中获取textWidth?

时间:2010-03-26 01:37:36

标签: flex actionscript

var txtIt:Text = new Text();
                txtIt.text = full_array[t][0];
                txtIt.width = 700;
                txtIt.buttonMode = true;
                txtIt.mouseChildren = false;
                txtIt.selectable = false;
                txtIt.y = t * 30;

                trace(txtIt.textWidth);

                myCanvas.addChild(txtIt);

为什么我不能获得组件的textWidth?我可以为textFields获取它。

我使用了命名空间代码,我有这个:

 import mx.core.mx_internal;
use namespace mx_internal;

            var txtIt:Text = new Text();



                txtIt.text = full_array[t][0];
                txtIt.width = 700;
                txtIt.buttonMode = true;
                txtIt.mouseChildren = false;
                txtIt.selectable = false;
                txtIt.y = t * 30;

                var txtfld:TextField = txtIt.getTextField() as TextField;
                trace(txtfld.textWidth);


                myCanvas.addChild(txtIt);

但是我得到TypeError:错误#1009:无法访问空对象引用的属性或方法。

1 个答案:

答案 0 :(得分:1)

您需要使用mx_internal命名空间,以便可以访问Text组件的TextField对象。在您的ActionScript代码中,您必须声明

import mx.core.mx_internal;
use namespace mx_internal;

然后像

var myText:Text = new Text();
var txtfld:TextField = myText.getTextField() as TextField;

所有文本测量属性和方法都可以通过TextField

获得