6. Auf Tasten und Maus reagieren
Auf Tasten und Maus reagieren

Manche Dinge sollen im ganzen Spiel gelten, nicht nur in einer Aktion. Dafür meldest du in einem Definitions-Skript einen Ereignis-Handler an: eine Funktion, die Visionaire bei einem bestimmten Ereignis aufruft.
Eine Taste für Hinweise
Leg an der Kulisse eine Aktion hinweis_geben mit der Ausführungsart „Aufruf durch andere Aktion“ (englisch „Called by other action“) an, die einen Hinweis ausgibt. Dann:
function tastenHandler(eventType, character, keycode, modifiers)
if eventType == eEvtKeyUp and character == "h" then
startAction(Actions["hinweis_geben"])
return true -- Taste ist erledigt
end
return false -- alles andere bearbeitet Visionaire wie gewohnt
end
registerEventHandler("keyEvent", "tastenHandler")
Wichtig ist der Rückgabewert: true heißt, die Engine ignoriert diese Taste. Gibst du bei allen Tasten true zurück, funktioniert zum Beispiel Escape nicht mehr.
Einfache Tasten-Aktionen kannst du auch ohne Lua im Editor anlegen. Der Handler lohnt sich, wenn du Tasten abhängig vom Spielzustand behandeln willst.
Das Mausrad
function mausHandler(eventType, position)
if eventType == eEvtMouseWheelUp then
print("Rad hoch bei " .. position.x .. ", " .. position.y)
end
end
registerEventHandler("mouseEvent", "mausHandler", {eEvtMouseWheelUp, eEvtMouseWheelDown})Später ausführen
setDelay(2000, function()
print("Zwei Sekunden später")
end)Vorsicht mit der Hauptschleife
Ein Handler für "mainLoop" läuft etwa 60 Mal pro Sekunde. Was dort steht, kostet bei jedem Bild Rechenzeit. Nutze ihn nur, wenn es wirklich nicht anders geht, und halte ihn kurz.
Regel zum Mitnehmen
Ereignis-Handler gehören in Definitions-Skripte und sollen nur das Nötigste tun.
Deine Aufgabe
Bau die Hinweistaste nach. Prüf danach, ob Escape im Spiel noch funktioniert.