我一直在尝试使用以下代码更改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])来获取文本,但没有发生。我也尝试过通过实例名来获取它,也没有成功。有人知道为什么这个不起作用吗?
感谢你的帮助。
发布于 2011-05-11 09:42:26
为了给其他人提供信息,我首先将TLF文本设置为可编辑。
然后我使用下面的代码来获取按钮内部的字符串:
var upState:Sprite = Sprite(drawButton.upState);
var upText:String = TLFTextField(upState.getChildAt(2)).text;并更改文本:TLFTextField(upState.getChildAt(2)).text = "Paused";
这肯定是有效的,并且经过了测试。
感谢用户elekwent的提示。
发布于 2011-05-11 09:08:37
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()方法。
将文本强制转换为TextField,您可以像这样访问其drawButton.upState属性:
TextField(drawButton.upState).text发布于 2011-06-07 03:51:06
当我尝试向SimpleButton添加文本时,这段代码可以正常工作:http://snipplr.com/view/8980/as3-creating-a-simplebutton-with-dynamic-text/
https://stackoverflow.com/questions/5957936
复制相似问题