【问题标题】:misunderstanding buttons and textfields误解按钮和文本字段
【发布时间】:2010-02-03 18:27:43
【问题描述】:

我有点困惑。我制作了一个按钮符号,并放置了一个名为“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;

同样,按钮有效,但按钮内部的标签无效。文本字段设置为动态,我将实例名称字段中的名称复制并粘贴到我的代码中。所以它们必须相同。我还开始默认从库中将单词按钮键入文本字段,它似乎工作正常,但如果我通过代码更改文本字段,它就不起作用。关于发生了什么的任何建议?谢谢!

【问题讨论】:

  • 能否提供更多代码进行测试?

标签: flash actionscript-3 actionscript


【解决方案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 个可见按钮状态中的每一个生成一个文本字段。文本字段的实例名称甚至无关紧要,并且从不使用。

【讨论】:

  • 我不完全明白你说的但它有效!你说的似乎是在编译期间,所有包含 simpleButton 对象的对象都变成了 displayObjectContainers。哪些是几乎没有用的显示对象(即轻量级的空显示对象)。因此它失去了文本等属性。因此,这就是它不起作用的原因。我们只是将对象转换回文本字段?这仅适用于 SimpleButtons 吗?非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2017-08-08
  • 2018-12-07
  • 1970-01-01
相关资源
最近更新 更多