我有点困惑。我做了一个按钮符号,我放了一个名为“butLabel”的文本框。此按钮被封装到另一个名为MainMenu的动画片段中。 cbegin是我给按钮的实例名称。如果我这样追踪....
trace(menu.cbegin);
它识别cbegin是一个按钮。但如果我像这样追踪它
trace(menu.cbegin.butLabel);
它说但是标签是空的。以下是我如何调用菜单动画片段
var menu = new MainMenu();
trace(menu.cbegin.butLabel);
menu.x = sr.stageWidth/2;
menu.y = sr.stageHeight/2;
同样,按钮有效,但按钮内的标签不起作用。 textfield设置为dynamic,我将实例名称字段中的名称复制并粘贴到我的代码中。所以他们必须是一样的。我还默认从库中键入单词按钮到文本字段,它似乎工作正常,但如果我通过代码更改文本字段,它不起作用。关于发生了什么的任何建议?谢谢!
答案 0 :(得分:1)
这是你能做的,有点像黑客。
注意:这假设TextField位于第二层(即getChildAt(1)
),位于创建SimpleButton时创建的初始层之上。
var menu:MainMenu = new MainMenu();
addChild(menu);
var upStateContainer:DisplayObjectContainer = menu.cbegin.upState as DisplayObjectContainer;
var butLableUp:TextField = upStateContainer.getChildAt(1) as TextField;
butLableUp.text = "Up State";
或作为一个班轮:
((menu.cbegin.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = "UP State";
<强>说明:强> 从Flash IDE编译flash时,SimpleButton及其子项的所有实例都将转换为其基本显示类型,如Sprites。即使在跨越所有四个帧的按钮状态上的图层上有一个文本字段,也会为3个可见按钮状态中的每一个生成一个文本字段。文本字段的实例名称甚至不重要,永远不会使用。