Как сделать ввод с клавиатуры с помощью LÖVE?

При использовании LÖVE я хочу переходить из одного меню в другое, нажимая клавишу ENTER. Но я знаю только love.keypressed и love.keyboard.isDown.

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


person Carlos Lombardii    schedule 17.08.2013    source источник


Ответы (1)


Попробуйте ввести код изменения в love.keyreleased()


Что-то подобное в main.lua

local changeMenu =false

function love.draw()
    if changeMenu then 
        -- do what you need to do
        changeMenu = false
    end
end

function love.keyreleased(key)
    if key=="return" or key=="kpenter" then
        changeMenu = true
    end 
end
person Alex    schedule 17.08.2013
comment
Но является ли оно постоянным? Другие просто меняют его, пока клавиша на самом деле нажата. - person Carlos Lombardii; 17.08.2013
comment
Событие будет вызвано при отпускании клавиши. Он не обращает внимания на то, как долго была нажата клавиша. Таким образом, он будет вызван только один раз, когда вы отпустите ключ. - person Alex; 17.08.2013
comment
Вы знаете, как вызвать его из love.draw()? Извините, что задаю так много вопросов. Я учусь любви. ;) - person Carlos Lombardii; 17.08.2013
comment
Вы не можете. Это функция верхнего уровня, такая как love.draw(); вы реализуете это в main.lua. Лучший подход — обновить какую-то переменную состояния в функции keyreleased() и воздействовать на нее в love.draw(). - person Alex; 17.08.2013
comment
Как создать эту переменную состояния? Я просто changeMenu = love.keyreleased("enter") - person Carlos Lombardii; 17.08.2013
comment
Похоже, changeMenu = love.keyreleased("enter") выдает ошибку переполнения стека. - person Carlos Lombardii; 17.08.2013
comment
О, не заметил код, который вы вставили туда. Это сработало как шарм. Спасибо. - person Carlos Lombardii; 17.08.2013
comment
Вам придется дать мне немного больше информации. Код, который я разместил, сработает с любым кодом, который заменяет комментарий, ровно один раз при каждом отпускании ввода. Вы добавили туда свой код? Вы можете опубликовать это? - person Alex; 17.08.2013
comment
После всего этого долгого времени я попробовал это снова, но это не сработало. Что ж, похоже, LOVE2D не для меня, так что да. - person Carlos Lombardii; 19.10.2013