Håndter inndata
Reager på tastatur og mus.
Håndter inndata er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.
To måter å lese inndata på
LÖVE tilbyr to måter å håndtere inndata på. Polling spør «er denne tasten trykket ned akkurat nå?» for hver ramme, noe som passer godt for kontinuerlige handlinger som bevegelse.
Hendelser er tilbakekall som utløses én gang når noe skjer, for eksempel love.keypressed. De passer godt for enkelthandlinger som å hoppe eller skyte.
Avspørring av tastaturet
love.keyboard.isDown(key) returnerer true så lenge en tast holdes nede. Kall den inne i love.update for en jevn, kontinuerlig respons.
Ettersom den kontrolleres for hver ramme, fortsetter handlingen så lenge tasten holdes nede. Dette passer naturlig for å flytte en spiller rundt.
function love.update(dt)
if love.keyboard.isDown('right') then
player.x = player.x + player.speed * dt
end
endKontrollere flere taster
love.keyboard.isDown kan ta imot flere taster samtidig og returnerer true hvis noen av dem holdes nede. Dette er praktisk for alternative bindinger.
De kan også kjede sammen separate kontroller for å håndtere hver retning uavhengig og dermed få full bevegelse i fire retninger.
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
endkeypressed-hendelsen
love.keypressed(key) utløses nøyaktig én gang idet en tast trykkes ned. Bruk den til handlinger som ikke skal gjentas mens tasten holdes nede, for eksempel hopping eller pause.
Motoren sender tastenavnet som en streng, slik at De kan sammenligne det med navn som 'space' eller 'escape'.
function love.keypressed(key)
if key == 'space' then
player.jumping = true
end
endAvslutte med Escape
Et vanlig mønster er å lukke spillet når spilleren trykker på Escape. love.event.quit avslutter motoren på en ryddig måte.
Ettersom keypressed utløses én gang per tastetrykk, unngår dette utilsiktede gjentatte utløsingar når tasten holdes nede.
function love.keypressed(key)
if key == 'escape' then
love.event.quit()
end
endkeyreleased
love.keyreleased(key) utløses én gang når en tast slippes. Ved å kombinere den med keypressed kan De selv holde oversikt over taster som holdes nede.
Dette er nyttig for ladingsmekanismer: start ladingen ved tastetrykk, utløs handlingen når tasten slippes, og mål hvor lenge tasten ble holdt nede.
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
endMuseposisjon
love.mouse.getPosition returnerer markørens gjeldende x- og y-posisjon inne i love.update eller love.draw. De kan også bruke getX og getY separat.
Koordinatene samsvarer med tegneområdet: origo er øverst til venstre, og y øker nedover.
function love.update(dt)
local mx, my = love.mouse.getPosition()
crosshair.x, crosshair.y = mx, my
endMuseknapper
Avspør knappene med love.mouse.isDown(1), der 1 er venstre knapp, 2 er høyre knapp og 3 er midtknappen.
Bruk hendelsen love.mousepressed(x, y, button) for enkeltklikk. Den utløses én gang og gir Dem klikkkoordinatene direkte.
function love.mousepressed(x, y, button)
if button == 1 then
spawnAt(x, y)
end
endTekstinnmating
Ved skriving leverer love.textinput(text) selve tegnet og tar hensyn til tastaturoppsett og modifikasjonstaster. Dette er bedre enn keypressed når De skal bygge tekstfelt.
Bruk keypressed sammen med den for å håndtere spesialtaster som backspace og enter, som textinput ikke sender.
function love.textinput(t)
inputBuffer = inputBuffer .. t
endKombinere avspørring og hendelser
Ekte spill kombinerer begge måtene: avspør bevegelsestaster for hver ramme i love.update, mens enkelthandlinger hører hjemme i hendelsestilbakekall.
Ved å velge riktig måte unngår De feil. Hvis De avspørret hopping i update, ville handlingen blitt utløst for hver ramme tasten holdes nede; en hendelse utløser den én gang, slik det er meningen.
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
endGrunnleggende om håndkontrollere
LÖVE støtter også kontrollere gjennom joystick-API-et. love.joystickpressed og en joysticks isGamepadDown leser knapper.
Analoge spaker returnerer verdier fra -1 til 1 via getGamepadAxis, slik at De kan skalere bevegelsen jevnt, på samme måte som ved tastaturavspørring med dt.
function love.update(dt)
if joystick then
local ax = joystick:getGamepadAxis('leftx')
player.x = player.x + ax * player.speed * dt
end
endKort test
Test forståelsen Deres av inn入力håndtering i LÖVE.
Oppsummering
Inn入力 i LÖVE kommer i to varianter: avspør love.keyboard.isDown og love.mouse.isDown for kontinuerlige handlinger, og reager på hendelsestilbakekall som love.keypressed og love.mousepressed for enkelthandlinger.
Muse-, tekst- og håndkontroller-API-ene kompletterer dette. Ved å velge riktig måte forblir kontrollene responsive og uten feil.
Lær deg Lua med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 40
- Leksjoner
- 159
Ofte stilte spørsmål
Er leksjonen «Håndter inndata» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Håndter inndata», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Håndter inndata»?
Reager på tastatur og mus. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lua Academy?
Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Håndter inndata»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?
Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- LOVE-spilløkken
- Tegn former og bilder
- Håndter inndata
- Bevegelse og kollisjoner