0

我需要计时器方面的帮助。我想为游戏创建一个类似炸弹的数字倒数计时器。

  1. 使用数字字体
  2. 总是两位数,例如 10、09...01、00(看起来像炸弹计时器)。
  3. 最后在最后几秒钟,将字体变为红色以增加戏剧性。

我目前在下面有一个基本的倒数计时器,20-0。倒计时变量从 20 开始,每 1000 毫秒减一,该数字显示在文本字段中。但是字体是通用的,一旦计数低于十,数字前面就没有零,我不知道如何在最后几秒钟更改字体颜色。

public class UsingATimer extends Sprite
{
    //The Timer object
    public var timer:Timer= new Timer(1000, countdown);
    public var countdown:Number = 20;

    //The Text objects
    public var output:TextField = new TextField();
    public var format:TextFormat = new TextFormat();

    public function UsingATimer()
    {
        //Initialize the timer
        output.text = countdown.toString();
        timer.addEventListener(TimerEvent.TIMER, countdownHandler);
        timer.start();

        //Set the text format object
        format.font = "Helvetica";
        format.size = 200;
        format.color = 0x000000;
        format.align = TextFormatAlign.RIGHT;

        //Configure the output text field   
        output.defaultTextFormat = format;
        output.autoSize = TextFieldAutoSize.RIGHT;
        output.border = false;
        output.text = "20";

        //Display and position the output text field
        stage.addChild(output);
        output.x = 200;
        output.y = 100;

    }
    public function countdownHandler(event:TimerEvent):void
    {
        countdown--;
        output.text = countdown.toString();
    }

}

如果没有基本的数字字体,我将不得不嵌入一个,我应该可以接受,但对于其他两个问题的任何帮助将不胜感激。

抱歉,如果代码到处都是,我是初学者。

谢谢你的时间。

4

1 回答 1

0

我想你基本上已经明白了。您可以做的是在倒计时处理程序中,只需检查该值是否小于 10,如果是,则在显示之前在前面附加一个 0。

countdown--;
if(countdown < 10){
    output.text = "0" + countdown.toString();
} else {
    output.text = countdown.toString();
}

然后要更改颜色,这将是相同的逻辑,检查您希望它更改颜色的数字,然后更改 TextFormat 对象中的颜色并将其应用于您的 TextField。

对于数字字体,您可以搜索并将其嵌入到 flash 中,但如果您只需要数字/有限字符,您也可以使用电影剪辑/图形制作一个,因为它们相对简单。我猜这取决于您需要它的花哨以及灵活程度。

于 2013-09-21T22:17:36.120 回答