你怎么在Lua制作秒表?
答案 0 :(得分:0)
我根本不了解Codea,我很可能会发现该库为gettime
和sleep
提供了一些功能。但是,作为纯Lua选项(附带使用luasocket的附带条件),以下代码实现了可以构建的示例。
socket = require('socket')
-- Define the stop watch
local start_time
function start()
-- Start the stop watch
start_time = socket.gettime() - 3800
end
function seconds_ellapsed()
-- Return the number of seconds since the stop watch was started
return socket.gettime() - start_time
end
-- As an example run the stop watch indefinately
start()
while true do
-- Get the time ellapsed and convert it to hours, minutes and seconds
ellapsed = seconds_ellapsed()
hours = math.floor(ellapsed / 3600)
minutes = math.floor((ellapsed - (hours * 3600)) / 60)
seconds = math.floor((ellapsed - (hours * 3600) - (minutes * 60)))
-- Print the time ellapsed to the command line
print(hours .. 'h', minutes .. 'm', seconds .. 's')
-- Wait a second between each update
socket.sleep(1)
end
你也可以使用os.clock
,但Lua没有内置机制来设置线程休眠一段时间(这是我的例子所必需的所以我选择使用luasocket)。有一篇关于在lua中实现睡眠的可能方法的有用文章:http://lua-users.org/wiki/SleepFunction
答案 1 :(得分:0)
这是一个非常基本的秒表,当用户点击屏幕时它会启动/重置。此示例显示经过的分钟和秒。如果您想要计算毫秒数,则可以使用ElapsedTime
代替os.time()
并自行计算小时数,分钟数等,而不是os.date()
。另外,我没有iPad,所以可能存在错误。
function setup()
fontSize(20)
background(100, 120, 160)
fill(255)
toggle_timer()
end
function toggle_timer()
timer_on = not timer_on
if timer_on then
start = os.time()
end
end
function draw()
if timer_on then
text(os.date("%M:%S", os.difftime(os.time(), start)),
WIDTH / 2, HEIGHT / 2)
end
end
function touched(touch)
if touch.state == BEGAN then
toggle_timer()
end
end