Tutorial:Callback Functions (Deutsch)
Die callback Funktionen werden in LÖVE von der Engine genutzt um verschiedene Aufgaben zu bewältigen, sind jedoch alle optional. Ein vollständiges Spiel wird jedoch fast alle benutzen, deshalb ist es klug zu wissen, wozu sie da sind.
Contents
love.load
function love.load()
bild = love.graphics.newImage("kuchen.jpg")
local f = love.graphics.newFont(12)
love.graphics.setFont(f)
love.graphics.setColor(0,0,0,255)
love.graphics.setBackgroundColor(255,255,255)
end
Diese Funktion wird nur ein einziges Mal beim Spielstart aufgerufen. Hier werden also normaler Weise die Ressourcen geladen, Variablen initialisiert und spezielle Einstellungen getätigt. Dies alles kann auch wo anders gemacht werden, wenn man es aber in dieser Funktion macht, wird es nur einmal ausgeführt, was einiges an Systemressourcen spart.
love.update
function love.update(dt)
if love.keyboard.isDown("up") then
num = num + 100 * dt --Dies erhöht num um 100 pro Sekunde
end
end
Diese Funktion wird ununterbrochen aufgerufen und wird die Funktion sein, wo die meisten Berechnungen stattfinden. 'dt' steht für "delta time" und ist die Anzahl der Sekunden die seit dem letzten Funktionsaufruf vergangen sind (dies ist normalerweise ein sehr kleiner Wert z.B.: 0.025714).
love.draw
function love.draw()
love.graphics.draw(bild, bildx, bildy)
love.graphics.print("Klicke und ziehe den Kuchen herum oder benutze die Pfeiltasten.", 10, 10)
end
In love.draw
kommt alles hinein was mit dem Zeichen des Bildschirms zu tun hat (draw = zeichnen). Alle love.graphics.draw
Funktionen müssen hier aufgerufen werden, außerhalb haben sie keine Wirkung (es ist aber möglich z.B.: das Zeichnen einer Karte in eine andere Funktion zu verlagern und diese Funktion dann hier aufzurufen). Auch diese Funktion wird ununterbrochen aufgerufen, deshalb ist zu beachten, dass wenn du den font/color/mode/usw. am Ende der Funktion änderst, dies Auswirkung auf die gesamte Funktion hat, also auch auf den Anfang. Zum Beispiel:
function love.load()
love.graphics.setColor(0,0,0) --Setzt die Farbe auf Schwarz
end
function love.draw()
love.graphics.print("Dieser Text ist nicht!!! schwarz, wegen der Zeile darunter.", 100, 100)
love.graphics.setColor(255,0,0) --Setzt die Farbe auf Rot
love.graphics.print("Dieser Text ist rot.", 100, 200)
end
love.mousepressed
function love.mousepressed(x, y, taste)
if taste == 'l' then
bildx = x --Bewegt das Bild zu der Position im Fenster auf die geklickt wurde
bildy = y
end
end
Diese Funktion wird immer bei einem Mausklick aufgerufen und bekommt die aktuelle Zeigerposition und die Taste die gedrückt wurde übergeben. Die Taste kann eines der constants sein. Die Funktion harmoniert gut mit love.mousereleased
.
love.mousereleased
function love.mousereleased(x, y, taste)
if taste == 'l' then
kamehameha(x,y) --Diese total super geile, selbst erstellte Funktion, ist woanders definiert
end
end
Diese Funktion wird immer beim Loslassen einer Maustaste aufgerufen und bekommt die aktuelle Zeigerposition und die Taste die losgelassen wurde übergeben. Du kannst diese Funktion zusammen mit love.mousepressed
oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
love.keypressed
function love.keypressed(taste, unicode)
if taste == 'b' then
text = "Die B-Taste wurde gedrückt."
elseif taste == 'a' then
a_gedrueckt = true
end
end
Diese Funktion wird immer bei einem Tastendruck auf der Tastatur aufgerufen und bekommt die Taste die gedrückt wurde übergeben. Die Taste kann jede von den Konstanten sein. Diese Funktion harmoniert gut mit love.keyreleased
.
love.keyreleased
function love.keyreleased(taste, unicode)
if taste == 'b' then
text = "Die B-Taste wurde losgelassen"
elseif key == 'a' then
a_gedrueckt = false
end
end
Diese Funktion wird immer beim Loslassen einer Taste auf der Tastatur aufgerufen und bekommt die losgelassene Taste übergeben. Du kannst diese Funktion zusammen mit love.keypressed
oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
love.focus
function love.focus(f)
if not f then
print("Fokussierung des Fensters verloren") --Fenster abgewählt
else
print("Fokussierung des Fensters erhalten") --Fenster angewählt
end
end
Diese Funktion wird immer dann aufgerufen, wenn der Benutzer das LÖVE-Fenster an /- bzw. abwählt. Als Beispiel: Falls der Benutzer grade in einem Fenster spielt (nicht Vollbild)und währenddessen auf einen Ort außerhalb des Fensters klickt, kann das Spiel dies bemerken und sich automatisch pausieren.
love.quit
function love.quit()
print("Danke fürs Spielen! Komm bald wieder. :D") --Wird in der Konsole ausgegeben
end
Diese Funktion wird immer aufgerufen, wenn der Benutzer das Programm beenden will (meistens durch das X am Fenster). Hier könnte das Spiel dann automatisch gespeichert werden.
Das sind die 'Callback' Funktionen und ihre grundlegende Benutzung.
Andere Sprachen
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info