我必须将5分钟的倒计时时钟作为作业。我得到了as3的基础并被告知添加'开始' - '重置' - '停止'按钮。到目前为止,我有一个可观的倒计时,但无法控制它。我是as2和flash的新手所以我希望这不是其中之一“如果你知道,你应该知道你的答案”情况。我试图在网上找到的任何东西都没有真正帮助我,所以如果有人能告诉我,如果我可以在正确的路径或前夕,如果可以按下这个代码的按钮去做上面说明的话。在谢谢你:)
var secs = "0" + 0;
var mins = 5;
timerDisplay.text = mins + ":" + secs;
var timerInterval = setInterval(countDown,1000);
//DISPLAYS DYNAMIC TEXT
function countDown()
{
secs--;
if (secs < 0)
{
secs = 59;
mins--;
}
if (secs < 10)
{
var secs2 = "0" + secs;
}
else
{
var secs2 = secs;
}
if (mins == 0 && secs == 0)
{
clearInterval(timerInterval);//STOPS TIME @ ZERO
}
timerDisplay.text = mins + ":" + secs2;
}
答案 0 :(得分:1)
由于这是一项任务,我不会给你任何代码,只是一些想法让你自己编写自己的代码。
您可能想要在舞台上添加两个(可能是三个)按钮。一个按钮可以是重置按钮,另一个按钮可以是在启动和停止之间进行切换的按钮(取决于计时器当前是否正在运行)。
重置按钮所需的唯一代码是将min
变量和secs
变量设置回其原始值(由于您的间隔代码可能加1秒)。如果您需要帮助开始使用按钮,则点击投掷功能会检查mc.onPress方法。
停止按钮所需的唯一代码是阻止间隔计数器继续计数的东西。我相信当你将你的计时器“清零”时,你已经有了这样的事情。
启动按钮所需的唯一代码是重启间隔计数器的东西。首次启动timerInterval
时,您会执行某种操作。
如果有人在您完成倒计时后决定点击开始按钮,或者有人决定多次点击开始按钮,则无效。
在第一种情况下,倒计时将继续为负数,因此您可能希望编写一个不允许发生的if语句(在启动按钮功能内)。
在第二种情况下,每按一次按钮,倒计时将变得越来越快。创建一个跟踪程序是否停止的布尔值可能有助于解决这个问题。
澄清我上面提到的关于区间代码的陈述:你的代码将每1000毫秒永久递减。当你减少时,文本框只会被刷新,所以如果你试着用5分零秒重置,你会看到数字跳到4:59然后继续递减。如果您重置为5分1秒,则数字将显示为跳至5:00,然后从那里开始减少。
我希望这有帮助!
答案 1 :(得分:0)
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Test extends MovieClip {
private var _timer:Timer = null;
private var _repeatCount:int = 0;
private var _totalMinutes:int = 5;
public function Test() : void {
addEventListener(Event.ADDED_TO_STAGE, _Init);
}
private function _Init(e:Event) : void {
_repeatCount = _totalMinutes * 60;
_timer = new Timer(1000, _repeatCount);
_timer.addEventListener(TimerEvent.TIMER, _OnTimerFired);
_timer.start();
}
private function _OnTimerFired(e:TimerEvent) : void {
var minRem:int = (_repeatCount - _timer.currentCount) / 60 ;
var secRem:int = (_repeatCount - _timer.currentCount) % 60;
trace(minRem + ":" + secRem);
}
}
}