2010-02-03 66 views
0

我有点困惑。我做了一个按钮符号,并且放了一个名为“butLabel”的文本框。此按钮被封装到另一个名为MainMenu的动画片段中。 cbegin是我给按钮的实例名称。如果我这样跟踪....误解按钮和文本框

trace(menu.cbegin); 

它认识到cbegin是一个按钮。但如果我这样跟踪它

trace(menu.cbegin.butLabel); 

它说butLabel为空。下面是我如何调用上的菜单影片剪辑

var menu = new MainMenu(); 
trace(menu.cbegin.butLabel); 
menu.x = sr.stageWidth/2; 
menu.y = sr.stageHeight/2; 

同样,按钮的作品,但相应的按钮犯规的内侧的标签。 textfield设置为动态,并且我将实例名称字段中的名称复制并粘贴到我的代码中。所以他们必须是一样的。我也开始在库中默认的文本字段中输入单词按钮,它似乎工作正常,但如果我通过代码更改文本字段,它不起作用。任何关于发生了什么的建议?谢谢!

+0

你能提供更多测试代码吗? – 2010-02-03 18:39:13

+0

你尝试过'menu.butLabel'吗? – 2010-02-03 18:41:49

回答

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"; 

说明: 当闪光从闪光IDE,使用SimpleButton的所有实例,和他们的孩子编译,被转换为它们的基的显示类型,像Sprites。即使您在跨越全部四个框架的按钮状态上的图层上有一个文本框,也会为这3个可见按钮状态中的每一个生成文本框。文本字段的实例名称甚至不重要,并且从不使用。

+0

我不完全明白你说的是什么但它有效!看起来你的看法是,在编译期间,所有包含simpleButton对象的对象都变成了displayObjectContainers。哪些显示对象相当差劲(即轻量级的空显示对象)。因此失去了文本等属性。因此这就是为什么它没有工作。我们只是拿着并铸造了对象回到一个文本框?这仅适用于SimpleButtons吗?并非常感谢! – numerical25 2010-02-03 20:01:36