getTextFormat()。size从类中返回时间轴中的不同值

时间:2014-03-20 18:59:33

标签: actionscript-3 flash

我正在使用Flash CS5中的AS3项目。我有一个名为aiMoneyText的动态文本字段,当我尝试获取其字体大小时:

root["aiMoneyText"].getTextFormat().size

我得到null。该代码位于一个类中,该类从文本字段所在的框架中的“操作”窗格中调用。我将root传递给构造函数中的该类。奇怪的是,如果我将这行代码直接放在“操作”窗格中而不是在类中,它将返回正确的值。

发生了什么事?这行代码的位置如何影响其输出?

链接到.fla:https://dl.dropboxusercontent.com/u/93726541/Poker/main.fla

类:

2 个答案:

答案 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的继承引用。

祝你好运!