Invoer afhandelen
Reageer op toetsen en muis.
Invoer afhandelen is een gratis Lua Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
Twee manieren om invoer te lezen
LÖVE biedt twee manieren om invoer te verwerken. Bij pollen vraag je elk frame: “is deze toets nu ingedrukt?” Dit is ideaal voor doorlopende acties zoals bewegen.
Gebeurtenissen zijn terugbelfuncties die één keer worden uitgevoerd wanneer er iets gebeurt, zoals love.keypressed. Ze zijn ideaal voor eenmalige acties zoals springen of schieten.
Het toetsenbord pollen
love.keyboard.isDown(key) geeft true terug zolang een toets ingedrukt blijft. Roep deze functie aan binnen love.update voor een vloeiende, doorlopende reactie.
Omdat de toets elk frame wordt gecontroleerd, blijft de actie doorgaan zolang je de toets ingedrukt houdt. Dit past natuurlijk bij het besturen van een speler.
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endMeerdere toetsen controleren
love.keyboard.isDown accepteert meerdere toetsen tegelijk en geeft true terug als een van de toetsen ingedrukt is. Dat is handig voor alternatieve toetskoppelingen.
Je kunt ook afzonderlijke controles aan elkaar koppelen om elke richting onafhankelijk af te handelen voor volledige beweging in vier richtingen.
function love.update(dt)
if love.keyboard.isDown('a', 'left') then
player.x = player.x - player.speed * dt
end
if love.keyboard.isDown('d', 'right') then
player.x = player.x + player.speed * dt
end
endDe gebeurtenis keypressed
love.keypressed(key) wordt precies één keer uitgevoerd op het moment dat een toets wordt ingedrukt. Gebruik dit voor acties die niet mogen worden herhaald zolang de toets ingedrukt blijft, zoals springen of pauzeren.
De engine geeft de naam van de toets door als tekenreeks, zodat je die kunt vergelijken met namen zoals 'space' of 'escape'.
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endAfsluiten met Escape
Een veelgebruikt patroon is het sluiten van het spel wanneer de speler op Escape drukt. love.event.quit sluit de engine netjes af.
Omdat keypressed één keer per druk wordt uitgevoerd, voorkom je hiermee onbedoelde herhaalde acties wanneer je de toets ingedrukt houdt.
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) wordt één keer uitgevoerd wanneer een toets wordt losgelaten. Door dit te combineren met keypressed kun je ingedrukte toestanden zelf bijhouden.
Dit is handig voor laadmechanismen: begin met laden wanneer de toets wordt ingedrukt en voer de actie uit bij het loslaten. Meet daarbij hoelang de toets ingedrukt was.
function love.keypressed(key)
if key == 'space' then chargeStart = love.timer.getTime() end
end
function love.keyreleased(key)
if key == 'space' then power = love.timer.getTime() - chargeStart end
endMuispositie
love.mouse.getPosition geeft de huidige x- en y-positie van de cursor terug binnen love.update of love.draw. Je kunt ook afzonderlijk getX en getY gebruiken.
De coördinaten komen overeen met de tekenruimte: de oorsprong bevindt zich linksboven en y neemt naar beneden toe.
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endMuisknoppen
Controleer knoppen met love.mouse.isDown(1). Hierbij is 1 de linkermuisknop, 2 de rechtermuisknop en 3 de middelste muisknop.
Gebruik voor afzonderlijke klikken de gebeurtenis love.mousepressed(x, y, button). Deze wordt één keer uitgevoerd en geeft de klikcoördinaten rechtstreeks door.
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endTekstinvoer
Voor typen geeft love.textinput(text) het daadwerkelijke teken door, rekening houdend met de indeling en modificatietoetsen. Dit is beter dan keypressed voor het bouwen van tekstvelden.
Gebruik keypressed daarnaast om speciale toetsen zoals Backspace en Enter af te handelen, omdat textinput deze niet doorgeeft.
function love.textinput(t)
inputBuffer = inputBuffer .. t
endPolling en gebeurtenissen combineren
Echte spellen combineren beide manieren: controleer bewegingstoetsen elk frame in love.update, terwijl eenmalige acties in gebeurtenis-terugelfuncties staan.
Door de juiste manier te kiezen voorkom je fouten. Als je in update op springen controleert, wordt de actie elk frame uitgevoerd zolang de toets ingedrukt blijft; een gebeurtenis voert de actie zoals bedoeld één keer uit.
function love.update(dt)
if love.keyboard.isDown('left') then player.x = player.x - 200*dt end
end
function love.keypressed(key)
if key == 'up' then jump() end
endBasisbeginselen van gamepads
LÖVE ondersteunt ook gamepads via de joystick-API. Met love.joystickpressed en isGamepadDown van een joystick kun je knoppen uitlezen.
Analoge sticks geven via getGamepadAxis waarden van -1 tot 1 terug, zodat je beweging vloeiend kunt schalen, net als bij het pollen van het toetsenbord met dt.
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endKorte toets
Toets je begrip van invoerafhandeling in LÖVE.
Samenvatting
Invoer in LÖVE komt in twee vormen: gebruik love.keyboard.isDown en love.mouse.isDown voor doorlopende acties en reageer op gebeurtenis-terugelfuncties zoals love.keypressed en love.mousepressed voor eenmalige acties.
De API's voor muis, tekst en gamepads maken het geheel compleet. Door de juiste manier te kiezen blijven de besturingen responsief en vrij van fouten.
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “Invoer afhandelen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Invoer afhandelen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “Invoer afhandelen”?
Reageer op toetsen en muis. Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Invoer afhandelen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De LOVE-game-loop
- Vormen en afbeeldingen tekenen
- Invoer afhandelen
- Beweging en botsingen