我正在使用Flash CS5中的AS3项目。我有一个名为aiMoneyText
的动态文本字段,当我尝试获取其字体大小时:
root["aiMoneyText"].getTextFormat().size
我得到null
。该代码位于一个类中,该类从文本字段所在的框架中的“操作”窗格中调用。我将root
传递给构造函数中的该类。奇怪的是,如果我将这行代码直接放在“操作”窗格中而不是在类中,它将返回正确的值。
发生了什么事?这行代码的位置如何影响其输出?
链接到.fla:https://dl.dropboxusercontent.com/u/93726541/Poker/main.fla
类:
答案 0 :(得分:0)
我建议你为fla创建一个文档类。创建一个影片剪辑类,并将类名添加到属性面板中的“类”字段,文档为“已选中”。当fla中没有选择任何内容时,文档会出现。
然后,文档类将充当您的时间轴脚本,因为它会自动添加到显示列表中,您可以执行诸如将ADDED_TO_STAGE事件侦听器添加到文档类构造函数之类的操作。这也允许你直接从文档类引用textField,而不是使用“root”,这是一个坏主意。
然后,您的文本字段应该可以在ADDED_TO_STAGE处理程序和文档类中的所有后续帧中使用。
答案 1 :(得分:0)
如上所述,解决方案需要在包含文本的字段上明确设置TextFormat
。由于没有为text属性设置文本,因此运行时没有创建具有set属性TextFormat
的可用size
对象。
审核代码后的一些值得注意的部分:
请记住,在实例化新对象时,如果您打算使用它,则需要保留对它的引用,否则将创建它,丢失范围,并为垃圾收集做好准备。
(即 - new Game(this)
,需要参考... - var myGame:Game = new Game(this);
)
从root
扩展该类时,请谨慎创建名为DisplayObject
的类级变量。DisplayObject
已经有一个名为root
的继承引用。