你如何实现一个LiveCode计时器?

时间:2014-03-06 11:53:13

标签: timer livecode

我正在做一对配对游戏。用户可以点击和匹配效果很好的对。但是,我想添加一个计时器。我不知道该怎么做。

我已经有一个“开始”按钮,用于启动和重置游戏。我添加了一个字段“计数器”,我将用它来显示时间。我只是不确定如何在不阻止游戏的情况下使计时器工作。

2 个答案:

答案 0 :(得分:3)

考虑到这是一款游戏,我希望你能在一段时间后显示秒数并结束游戏。

LiveCode有很好的语法。 'send'命令允许您在指定的时间内发送消息。例如:

send "handlerName" to target in 1 second

因此,应用此原则允许我们使用几行脚本创建计时器

local sSeconds
on countSeconds
   add 1 to sSeconds
   send "timerIncrease" to me in 1 second
end countSeconds

这个例子将永远计算,所以可能没那么有用!

你描述了一个简单的游戏,所以我想你想要从60秒倒数到0.当你点击0时,告诉用户他们的时间到了.T在你的按钮中你可以尝试以下脚本

local sGameSeconds
local sTimerRunning

on mouseUp
   if the label of me is "start" then
      set the label of me to "reset"
      put true into sTimerRunning
      put 60 into sGameSeconds
      send "timerRun" to me in 1 second
   else
      set the label of me to "start"
      put false into sTimerRunning
      put 60 into field "counter"
   end if
end mouseUp

on timerRun
   if sTimerRunning is true then
      subtract 1 from sGameSeconds

      if sGameSeconds < 1 then
         put 0 into field "counter"
         put false into sTimerRunning
         set the label of button "start" to "start"
         timerFinished
      else
         put sGameSeconds into field "counter"
         send "timerRun" to me in 1 second
      end if
   end if
end timerRun

on timerFinished
   answer "Time Up!"
end timerFinished

答案 1 :(得分:1)

你所要求的并不完全清楚。你写的是你想要一个计时器,但是你没有说出你想用它做什么。你也没有说你是否希望这个计时器实际显示时间,或者你是否只想在特定时间后发生某些事情。

以下是显示时间的简单方法:

on showTime
  put the long time into fld "Time"
  send "showTime" to me in 100 milliseconds
end showTime

通过每100毫秒调用一次时间,显示的时间绝不会超过1/10秒。

这是一种显示仅显示小时和分钟的计时器的有效方法。它及时发送showTime消息并使用最小的处理能力:

on mouseUp
   if showTime is in the pendingMessages then
      put the pendingMessages into myMsgs
      filter myMsgs with "*showTime*"
      repeat for each line myMsg in myMsgs
         cancel item 1 of myMsg
      end repeat
   else
      showTime
   end if
end mouseUp

on showTime
   set the itemDel to colon
   put the system time into myTime
   put myTime into fld 1
   put item 2 of myTime into myMinutes
   if myMinutes is 59 then
      add 1 to item 1 of myTime
      if item 1 of myTime >= 24 then
         put 0 into item 1 of myTime
      end if
      put "00" into item 2 of myTime
   else
      add 1 to item 2 of myTime
   end if
   convert myTime to seconds
   put myTime - the seconds into myTime
   send "showTime" to me in myTime seconds
end showTime

您可以通过单击包含mouseUp处理程序的按钮来启动计时器,您可以通过再次单击相同按钮来停止计时器。

如果这不是您所需要的,请详细解释。