Actionscript 3 getTextFormat().size从时间轴返回的值与从类返回的值不同
我在Flash CS5中从事AS3项目。我有一个名为Actionscript 3 getTextFormat().size从时间轴返回的值与从类返回的值不同,actionscript-3,flash,Actionscript 3,Flash,我在Flash CS5中从事AS3项目。我有一个名为aiMoneyText的动态文本字段,当我尝试获得它的字体大小时: root["aiMoneyText"].getTextFormat().size 我得到null。该代码位于从textfield所在框架中的Actions窗格调用的类中。我将root传递给构造函数中的那个类。奇怪的是,如果我将这行代码直接放在操作窗格中,而不是放在类中,它将返回正确的值 发生什么事了?这行代码的位置如何影响其输出 链接到.fla: 课程: (文件类别) 我
aiMoneyText
的动态文本字段,当我尝试获得它的字体大小时:
root["aiMoneyText"].getTextFormat().size
我得到null
。该代码位于从textfield所在框架中的Actions窗格调用的类中。我将root
传递给构造函数中的那个类。奇怪的是,如果我将这行代码直接放在操作窗格中,而不是放在类中,它将返回正确的值
发生什么事了?这行代码的位置如何影响其输出
链接到.fla:
课程:
- (文件类别)
然后,您的文本字段应该在“添加到”阶段处理程序和文档类的所有后续帧中可用。如前所述,解决方案要求在包含文本的字段上显式设置
TextFormat
。由于没有为文本属性设置文本,运行时没有使用设置的属性创建可用的TextFormat
对象size
查看代码后,请注意以下几点:
- 请记住,在实例化一个新对象时,如果您计划使用它,则需要保留对它的引用,否则它将被创建,失去作用域,并准备进行垃圾收集
(即-
,需要一个参考…-新游戏(此)
)var myGame:Game=新游戏(此);
- 从
DisplayObject
扩展类时,创建名为DisplayObject
的类级变量时要小心,因为它已经有一个名为root
的继承引用root
祝你好运 我现在意识到这可能是因为代码是在TextField被添加到stage之前被调用的。有什么办法吗?从时间轴的根返回主时间轴。我认为您应该首先验证传递给构造函数的根不是null。其次,如果它不为null,请验证它是否是正确的根目录(MainTimeline是您要查找的,听起来像什么?但根目录将根据您使用它的位置而有所不同)。最后,如果这不起作用,您可能需要使用MovieClip(root).aiMoneyText。如果你想在将根添加到stage之后使用它,在构造函数中创建一个added_to_stage事件,该事件将在添加后运行,然后你可以访问根。我可能会在答案中列出所有这些,但我想我会先从你那里听到文本字段的位置(timeline或其他未被偶然添加到显示列表中的类)@BennetYeates我应该将事件侦听器添加到哪个对象?我尝试将其添加到textfield,但似乎不起作用(事件从不触发)。添加到\u阶段仅对DisplayObjects有用。因此,如果您有一个扩展DisplayObject的类(Sprite、MovieClip等)包含TextField的,您可以添加到该类,而不是TextField对象。谢谢,我已经忘记了所有文档类。但是,即使进行了此更改,我仍然从文本格式中获取null,即使在myDocumentClass.OnAddedStatage处理程序中也是如此。您是否检查了是否可以访问“aiMoneyText”在其他方面,如设置其.text?或检查其是否在显示列表中?您没有使用root,是吗?