【问题标题】:Actionscript 3 countdown timer won't display time in textfield AND nothing happens when timer reaches 0Actionscript 3倒数计时器不会在文本字段中显示时间并且计时器达到0时没有任何反应
【发布时间】:2011-01-24 17:18:12
【问题描述】:

我使用为 AS2 编写的教程在 AS3 中创建了一个游戏,但我无法让计时器正常工作。游戏包含 3 帧、开始画面、游戏循环和结束画面。计时器从第 2 帧开始,并倒计时(用跟踪测试过)。当计时器达到 0 时,我想进入游戏结束画面的第 3 帧,但我的代码无法正常工作。

var fl_SecondsToCountDown:Number = 30;

var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
fl_CountDownTimerInstance.start();
theTimer.text = String(fl_SecondsToCountDown);

function fl_CountDownTimerHandler(event:TimerEvent):void
{

    if(fl_SecondsToCountDown == 0){;
        gotoAndPlay(3);
    }else{

    trace(fl_SecondsToCountDown + " seconds");
    fl_SecondsToCountDown--;
    }
}

我的第二个问题是 ny timer (theTimer) 不显示时间。

编辑:

var running:Boolean = new Boolean();
running = false;
var time:Number = new Number();
var fl_SecondsToCountDown:Number = 30;
var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
fl_CountDownTimerInstance.start();

function fl_CountDownTimerHandler(event:TimerEvent):void
{
    time=fl_SecondsToCountDown;

    if(time == 0){
        running = false;
        trace(running);
        gotoAndStop(3);
    }else{

    trace(fl_SecondsToCountDown + " seconds");
    fl_SecondsToCountDown--;
    theTimer.text = String(fl_SecondsToCountDown);

    }
}

【问题讨论】:

  • 你确定设置值时timer存在吗?
  • 您的程序中有一个错字:if(fl_SecondsToCountDown == 0){;,当您更改 fl_SecondsToCountDown 变量时,您的 textField 也不会自行更新。
  • 不是拼写错误,而是复制/粘贴错误:) 谢谢。 fl_SecondsToCountDown 确实有效。我不得不移动它的位置,我不得不重新创建文本字段。我为 AS2 关注的教程说将文本字段转换为 mc。将其保留为文本字段是正确的做法。

标签: flash actionscript-3 timer textfield


【解决方案1】:

确保在fl_CountDownTimerHandler 函数中更新theTimer,否则它只会在初始化时更新。

我的猜测是你的最后一次倒计时检查没有被触发,因为当fl_SecondsToCountDown 已经为 0 时,它永远不会再次运行该事件。使用trace 添加更多检查,更容易找出发生了什么。

【讨论】:

  • 谢谢 zeh 我得到了显示的计时器。我无法启动倒计时检查。我添加了我认为是您所说的支票。跟踪(运行)没有重新执行
  • 想通了。计时器实际上从未达到 0,它在 1 秒后停止我将 if 语句更改为 if(time == 1){...gotoAndStop(...);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多