我一直在尝试使用以下方法更改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])
尝试获取文本,但没有发生。也尝试通过实例名称获取它,也没有运气。有谁知道为什么这不起作用?
感谢帮助。
答案 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/