Lua обновить экран во время цикла - PullRequest
0 голосов
/ 29 ноября 2018

Я пишу функцию для экранного персонажа, чтобы следовать пути маркеров.Я хотел бы перебрать все маркеры для этого символа и обновить отображение для каждого.Сейчас происходит то, что дисплей обновляется только один раз в конце итерации.Судя по нескольким часто задаваемым вопросам, похоже, что 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 

Заранее благодарим вас за понимание.

1 Ответ

0 голосов
/ 29 ноября 2018

Этот блог дает пример, как решить эту проблему.Интересным является сопрограммы (или здесь ).Идея состоит в том, что вы все еще можете написать код, как в своем примере, но после каждой итерации вы выходите из цикла, рисуете на экране и продолжаете функцию в той позиции, которую вы оставили.

Может выглядеть так:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...