Flash as3 - 使用Timer更新动态文本的Movieclip。没有更新

时间:2011-12-12 08:05:18

标签: flash actionscript-3

我是as3的新手。 我正在尝试使用Timer类创建一个非常简单的倒计时

  1. 我有一个movieclip,它有一个dynamic text元素。
  2. movieclip使用包代码
  3. 包显然是从MovieClip类派生的
  4. 我有一个timer,它每秒都会更新动态文本字段。
  5. 调试代码时,我发现计时器工作正常。它更新了动态文本字段的值。

    然而,由于某种原因,它本身并没有得到更新。我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

如果您的计时器处于“工作”状态(意味着您可以跟踪它并看到它按预期打印到日志中),那么很可能是您在文本字段中设置字体的方式存在问题。登记/> 如果您确定正确调用了文本字段的实例名称(跟踪对象以确保Flash知道它,如... trace(myTextField); //(这不应该为null,或者不定义,如果您已将文本字段的实例名称设置为“myTextField”。

如果这一切都正确,那么几乎可以肯定是字体嵌入问题。这是CS4>的地方。真的搞砸了小狗。单击文本字段并选择字体,然后单击嵌入字体。在您嵌入字体并给它自己的名字(“myArialBold”)后,您需要在可用字体列表中找到* myArialBold(在属性窗格中,而不是在字体对话框中)并选择您的嵌入式字体。

它没有任何理性意义,因为你感觉你在嵌入对话框中选择了字体,但事实上,这就是你将字体嵌入环境的地方,它不是实际上对这个特定的文本字段起作用,直到你从所有字体的下拉菜单中选择它(现在它也将在顶部,在所有你自己的自定义嵌入字体所在的行之上)。

好处是它现在将在这个项目的持续时间内存在,您只需为任何文本字段选择它(而不需要再次嵌入)。

缺点是,如果您删除了嵌入但忘记更改任何文本字段上的关联,Flash会在每次打开此项目时抱怨正在搜索的字体丢失并且您将撕掉每一个最后一根头发在你的头上寻找这个文本字段的位置。在一个大项目中,我看到这导致人们自杀。很伤心。

如果这不起作用,我们需要查看更多代码:)

答案 1 :(得分:2)

没有比这个基本测试更多的东西...其他问题可能与文本格式有关,但就Timer而言,它并没有超出这个范围。

如果您是AS3的新用户,请尝试将您的应用程序分解为更小的块,以找出其中断的位置...

private var textfield:TextField = new TextField();
private var increment:int;
private var timer:Timer = new Timer( 1000 );

private function init():void
{
    addChild( textfield );

    timer.addEventListener( TimerEvent.TIMER , updateText );
    timer.start();  
}

private function updateText( event:TimerEvent):void
{
    increment++;
    textfield.text = increment.toString();  
}