Difference between revisions of "Tutorial:Callback Functions (Deutsch)"
m (Update for new syntax) |
m (→love.load) |
||
Line 7: | Line 7: | ||
local f = love.graphics.newFont(12) | local f = love.graphics.newFont(12) | ||
love.graphics.setFont(f) | love.graphics.setFont(f) | ||
− | love.graphics.setColor(0,0,0, | + | love.graphics.setColor(0,0,0,1) |
− | love.graphics.setBackgroundColor( | + | love.graphics.setBackgroundColor(1,1,1) |
end | end | ||
</source> | </source> |
Revision as of 07:10, 10 September 2023
Die callback Funktionen werden von love.run aufgerufen und führen unterschiedliche Aufgaben aus. Diese Aufgaben sind optional, jedoch würde ein umfangreiches Spiel mit hoher Wahrscheinlichkeit nahezu jede dieser callback Funktionen nutzen, wodurch es ratsam wäre zu Wissen was jede einzelne von ihnen bewirkt.
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,1)
love.graphics.setBackgroundColor(1,1,1)
end
Diese Funktion wird nur ein einziges Mal beim Spielstart aufgerufen. Hier werden also normalerweise die Ressourcen geladen, Variablen initialisiert und spezielle Einstellungen getroffen. Dies kann auch woanders 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, inder 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
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousepressed(x, y, maustaste, istouch)
if maustaste == 1 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
Available since LÖVE 0.10.0 |
This variant is not supported in earlier versions. |
function love.mousereleased(x, y, maustaste, istouch)
if maustaste == 1 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