Lua在循环期间更新屏幕
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua在循环期间更新屏幕相关的知识,希望对你有一定的参考价值。
我正在为屏幕上的角色编写一个函数来跟踪标记的路径。我想遍历该角色的所有标记,并更新每个标记的显示。现在发生的事情是显示只在迭代结束时更新一次。根据一些常见问题解答,看起来lua的设计就是这样工作的。那么在卢阿完成渐进运动的最佳方法是什么?
local function follow_movement_path (moving_char)
these_markers = moving_char.move_markers
for m, n in ipairs(these_markers) do
this_marker = n
moving_char.x = this_marker.x
moving_char.y = this_marker.y
print(this_marker.current_space.name)
sleep(1)
end
end
提前感谢您的任何见解。
答案
这个blog给出了一个如何解决这个问题的例子。一个有趣的是coroutines(或here)approch。我们的想法是你仍然可以在你的例子中编写代码,但是在每次渲染之后你都会跳出循环,在屏幕上画画并继续你离开的确切位置。
看起来像这样:
local function follow_movement_path (moving_char)
these_markers = moving_char.move_markers
for m, n in ipairs(these_markers) do
this_marker = n
moving_char.x = this_marker.x
moving_char.y = this_marker.y
print(this_marker.current_space.name)
coroutine.yield()
end
end
local c = coroutine.create(follow_movement_path)
coroutine.resume(c)
draw_on_display()
coroutine.resume(c)
以上是关于Lua在循环期间更新屏幕的主要内容,如果未能解决你的问题,请参考以下文章