我正在编写一个可以让最终用户轻松定制的GUI。这些函数是用C ++编写的,从Lua调用。我正在尝试创建一个Sleep()类型的函数来暂停脚本而不是程序本身。
我能够通过使用线程并为每个函数创建一个来使其工作。但是,我希望它是一个单独的功能。就像在,而不是让它成为CreateButton函数和其他所有函数的一部分,只需要一个延迟或休眠功能,只停止脚本,而不是整个程序。
我是Lua的新手,我真的不知道怎么回事。任何帮助表示赞赏。
答案 0 :(得分:2)
我会研究使用协同程序和消息传递来创建状态机。将每个按钮视为一个c ++字符串,将其传递到协程恢复中。然后,您可以构建一个可以打开消息的小型状态机。然后,您可以执行一些UI工作,然后将协同程序重新置于睡眠状态,直到某些内容向其发送另一条消息。
如果您有一个执行UI的状态机,这非常方便。
伪代码:
c_obj:wait_for_message("mouse_down");
local message = coroutine.yield();
if(message == "mouse_down") then
update draw function.
end
c_obj:wait_for_message("mouse_up");
local message = coroutine.yield();
if(message == "mouse_up") then
Update UI..
update draw function.
end
etc...
答案 1 :(得分:1)
为了让您的忙碌等待解决方案更有效率,如何使用select()
或类似方法等待一些GUI事件处理,而不是旋转?无论脚本方面如何,这似乎都是您需要在GUI中执行的操作。