RGSS/Script is hanging
Aus Scientia
Version vom 17. April 2013, 00:02 Uhr von KaiD (Diskussion | Beiträge)
Inhaltsverzeichnis
Bedeutung
Hangup oder Script is hanging ist der Name einer Exception im RGSS1, die eintritt, wenn Graphics::update 10 Sekunden lang nicht aufgerufen wurde. Die Ursachen dafür können vielfältig sein.
In RGSS2 wurde diese Klasse entfernt und falls sich das "RGSS2 Player"-Fenster aufhängt, muss dieses manuell, z.B. per Alt+F4, geschlossen werden. Außerdem öffnet sich unter den neueren Versionen von Microsoft Windows nach einiger Zeit ein Dialog mit dem Inhalt "Game.exe reagiert nicht mehr." mit dem entsprechenden Button zum Schließen des aufgehängten Fensters.
Gründe
- Nicht kompatible Scripte
- Zu großes Tileset oder Animation
- "while, unless, loop"-Schleifen, die niemals enden
- zeitaufwändiger Code. Beispiele eines solchen Codes wäre das Drehen von mehreren und großen [[Bitmap}]-Objekten oder der Verwendung von Win32API::call.
Gegenmaßnahmen
Folgendes ist nur für das RGSS1 relevant, da wie bereits erwähnt diese Exception nicht mehr im RGSS2 existiert!
Das Schlüsselwort rescue
Wie im Artikel rescue erwähnt ist die Aufgabe von rescue Exceptions abzufangen.
begin # Rufe 10 Sekunden Graphics::update nicht auf sleep(10) rescue Hangup end
Aufruf von Graphics::update in einem Thread
ANTI_HANGUP_THREAD = Thread.start{ sleep(9) Graphics.update }