Tutorial:Callback Functions (Deutsch)

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.

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 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

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

Personal tools