Difference between revisions of "Tutorial:Callback Functions (Deutsch)"

m
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Die [[:Category:Callbacks|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.
+
Die [[:Category:Callbacks|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 [[:Category:Callbacks|callback]] Funktionen nutzen, wodurch es ratsam wäre zu Wissen was jede einzelne von ihnen bewirkt.
  
 
==[[love.load]]==
 
==[[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,255)
+
   love.graphics.setColor(0,0,0,1)
   love.graphics.setBackgroundColor(255,255,255)
+
   love.graphics.setBackgroundColor(1,1,1)
 
end
 
end
 
</source>
 
</source>
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.
+
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]]==
 
==[[love.update]]==
Line 21: Line 21:
 
end
 
end
 
</source>
 
</source>
Diese Funktion wird ununterbrochen aufgerufen und wird die Funktion sein, wo die meisten Berechnungen stattfinden. 'dt' steht für "[[love.timer.getDelta|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).
+
Diese Funktion wird ununterbrochen aufgerufen und wird die Funktion sein, inder die meisten Berechnungen stattfinden. 'dt' steht für "[[love.timer.getDelta|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]]==
 
==[[love.draw]]==
Line 38: Line 38:
 
function love.draw()
 
function love.draw()
 
   love.graphics.print("Dieser Text ist nicht!!! schwarz, wegen der Zeile darunter.", 100, 100)
 
   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.setColor(1,0,0) --Setzt die Farbe auf Rot
 
   love.graphics.print("Dieser Text ist rot.", 100, 200)
 
   love.graphics.print("Dieser Text ist rot.", 100, 200)
 
end
 
end
Line 44: Line 44:
  
 
==[[love.mousepressed]]==
 
==[[love.mousepressed]]==
 +
{{newin|[[0.10.0]]|100|type=variant}}
 
<source lang="lua">
 
<source lang="lua">
function love.mousepressed(x, y, taste)
+
function love.mousepressed(x, y, maustaste, istouch)
   if taste == 'l' then
+
   if maustaste == 1 then
       bildx = x --Bewegt das Bild zur Mausklickposition
+
       bildx = x --Bewegt das Bild zu der Position im Fenster auf die geklickt wurde
 
       bildy = y
 
       bildy = y
 
   end
 
   end
Line 55: Line 56:
  
 
==[[love.mousereleased]]==
 
==[[love.mousereleased]]==
 +
{{newin|[[0.10.0]]|100|type=variant}}
 
<source lang="lua">
 
<source lang="lua">
function love.mousereleased(x, y, taste)
+
function love.mousereleased(x, y, maustaste, istouch)
   if taste == 'l' then
+
   if maustaste == 1 then
 
       kamehameha(x,y) --Diese total super geile, selbst erstellte Funktion, ist woanders definiert
 
       kamehameha(x,y) --Diese total super geile, selbst erstellte Funktion, ist woanders definiert
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
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 <code>[[love.mousepressed]]</code> oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
+
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 <code>[[love.mousepressed]]</code> oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
  
 
==[[love.keypressed]]==
 
==[[love.keypressed]]==
Line 86: Line 88:
 
end
 
end
 
</source>
 
</source>
Diese Funktion wird immer beim Loslassen einer Taste auf der Tastatur aufgerufen und bekomt die losgelassene Taste übergeben. Du kannst diese Funktion zusammen mit <code>[[love.keypressed]]</code>  oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
+
Diese Funktion wird immer beim Loslassen einer Taste auf der Tastatur aufgerufen und bekommt die losgelassene Taste übergeben. Du kannst diese Funktion zusammen mit <code>[[love.keypressed]]</code>  oder separat benutzen, sie sind in keinster Weise miteinander verbunden.
  
 
==[[love.focus]]==
 
==[[love.focus]]==
Line 94: Line 96:
 
     print("Fokussierung des Fensters verloren") --Fenster abgewählt
 
     print("Fokussierung des Fensters verloren") --Fenster abgewählt
 
   else
 
   else
     print("Fokussierung des Fensters erhalten") --Fenster angewählt ;)
+
     print("Fokussierung des Fensters erhalten") --Fenster angewählt
 
   end
 
   end
 
end
 
end
 
</source>
 
</source>
Diese Funktion wird immer dann aufgerufen, wenn der Benutzer das LÖVE-Fenster an oder abwählt. Als Beispiel: Falls der Benutzer grade in einem Fenster spielt (nicht Vollbild), und dann jemand auf den Webbrowser klickt, kann das Spiel dies bemerken und sich automatisch pausieren.
+
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]]==
 
==[[love.quit]]==
Line 110: Line 112:
 
Das sind die 'Callback' Funktionen und ihre grundlegende Benutzung.
 
Das sind die 'Callback' Funktionen und ihre grundlegende Benutzung.
  
[[Category:Tutorials]]
+
[[Category:Tutorials (Deutsch)]]
  
 
{{#set:LOVE Version=0.6.0}}
 
{{#set:LOVE Version=0.6.0}}

Latest revision as of 07:12, 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.

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(1,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