Ожидание, когда пользователь поднимет мышь — не работает: Love2D

Я занят созданием программы с использованием движка Love2D, где пользователь щелкает, и он возвращает координаты текущего местоположения мыши. Однако, прежде чем вернуться в другое место, пользователь должен «отменить щелчок» мышью, а затем щелкнуть в следующем нужном месте.

Я вставил скрипт, который должен обрабатывать это ниже:

function scripts.waitForMouseLift()
    while love.mouse.isDown("l", "r") do
        --Stays in a loop until user releases mouse, then lets the program continue
    end
end

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

Итак, мой вопрос состоит из двух частей: во-первых, есть ли способ заставить этот метод работать? Во-вторых, есть ли альтернативы или лучшие решения этой проблемы?


person cmimm101    schedule 10.01.2015    source источник
comment
Что ты пытаешься сделать?   -  person ryanpattison    schedule 10.01.2015
comment
Эта процедура будет вызываться, когда мне нужно дождаться, пока пользователь «отменит щелчок», прежде чем программа сможет продолжить работу. Таким образом, он, по сути, будет находиться в этом цикле до тех пор, пока пользователь не «отменит щелчок», после чего он выйдет из цикла и позволит остальной части программы продолжить работу.   -  person cmimm101    schedule 10.01.2015


Ответы (1)


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

function love.mousepressed(x, y, button)
  -- do something with x, y
  print("Mouse Pressed", button, "at", x, y)
end


function love.mousereleased(x, y, button)
  print("Mouse Released", button, "at", x, y)
end
person ryanpattison    schedule 10.01.2015