访问SimpleButton TextField

时间:2011-05-11 00:32:21

标签: flash actionscript-3

我一直在尝试使用以下方法更改SimpleButton实例中的文本:

var drawButton:SimpleButton = main.drawButton;
var upButton:DisplayObjectContainer = drawButton.upState as DisplayObjectContainer;
var upButtonText:TextField = upButton.getChildAt(1) as TextField;
upButtonText.text = "Pause";

我从这里找到了这个解决方案:how can i change texts in the dynamic textFields in SimpleButton instance (button symbol)?

不幸的是,upButtonText返回null。根据调试,upButton有3个孩子,所以我尝试getChildAt([0-2])尝试获取文本,但没有发生。也尝试通过实例名称获取它,也没有运气。有谁知道为什么这不起作用?

感谢帮助。

3 个答案:

答案 0 :(得分:2)

对于其他人的信息,我首先将TLF文本设置为可编辑。

然后我使用此代码获取按钮内的String:

var upState:Sprite = Sprite(drawButton.upState);
var upText:String = TLFTextField(upState.getChildAt(2)).text;

并更改文字:TLFTextField(upState.getChildAt(2)).text = "Paused";

这绝对有效,并经过测试。

感谢用户elekwent的提示。

答案 1 :(得分:1)

package
{
    import flash.display.SimpleButton;
    import flash.display.Sprite;
    import flash.text.TextField;

    public class Test extends Sprite
    {
        public function Test()
        {
            var t:TextField = new TextField();
            t.text = "Play";
            var b:SimpleButton = new SimpleButton(t);
            addChild(b);
            trace(TextField(b.upState).text);
        }
    }
}

跟踪输出显示TextField的text属性。

您的方法不起作用,因为SimpleButton和TextField类都不从DisplayObjectContainer类继承,因此不能使用addChild(),addChildAt()或getChildAt()方法。

将drawButton.upState强制转换为TextField,您可以像这样访问其text属性:

TextField(drawButton.upState).text

答案 2 :(得分:0)

当我尝试向SimpleButton添加文本时,此代码对我有用: http://snipplr.com/view/8980/as3-creating-a-simplebutton-with-dynamic-text/