Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastenbefehle



Expresseon
29.10.2007, 08:09
Wie verwirklicht man mit Ruby den Druck einer Taste, den der Spieler nicht selber auslöst (um z.B. das Menü aufrufen zu lassen)?

The_Burrito
29.10.2007, 11:22
Wenn du nur ins Menü wechseln willst brauchst du gar keinen Tastendruck simulieren. Du musst nur die aktuelle Szene auf das Menü setzen

$scene = Scene_Menu.new
In der Regel ist es also einfacher den Code auszüführen, der normalerweise passiert wenn der Knopf gedrückt wird.
Willst du wirklich Tastendrücke simulieren, musst du dich mit der WinApi spielen, was aber bei falscher Anwendung zu unschönen Resultaten führt.

Expresseon
29.10.2007, 13:41
Ich brauche aber die Tastenbefehle... Ich muss schließlich auch im Menü manuell Gegenstände wählen können, etc.

The_Burrito
29.10.2007, 16:16
Wie gesagt, es reicht wenn du den Code aufrufst, der normalerweise aufgerufen werden würde, wenn du eine Taste drückst, statt einen Tastendruck zu "forcieren". Das erfordert aber eine gewisse Einarbeitung in den Menü Code usw.
Um richtig einen Tastendruck zu simulieren musst du WinApi-Calls verwenden, und wenn man da nicht weiß was man macht, kann das ziemlich ins Auge gehen. Daher empfehle ich dir es zu lassen.

Expresseon
29.10.2007, 16:19
Na gut. :o Ich wollte halt, dass das Auswahlfeld herumwandert. Ist aber auch verzichtbar. Danke!

The_Burrito
29.10.2007, 18:49
Was ja auch funktionieren würde. Um mal zu verdeutlichen was ich meine:

Im Code von Scene_Menu finden wir in Zeile 86 (sofern du noch nichts geändert hast folgenden Code


@command_window.update
Was macht das jetzt genau?
Im großen und ganzen wird in dieser update Funktion überprüft ob die Oben- oder Untentaste gedrückt wurde und setzt den Index des Ausgewählten Menüpunktes neu.

Anstatt nun also irgendwie einen Tastendruck zu simulieren, der dann vom Menü aufgefangen wird und den Index enstprechend neu setzt, kannst du das auch selber tun.
Damit das ganze dann allerdings aussieht wie eine selbstlaufende Demo, ist ein wenig mehr Arbeit notwendig. Allerdings funktioniert das alles komplett ohne WinApi oder irgendwelche simulierten Tastendrücke.

Expresseon
29.10.2007, 21:48
Mal etwas anderes:
Das Skill-Menü. Unverändert zeigt es ein Helpwindow mit Skillinfos an, dann ein Window mit Charakterinformationen und ein Window mit allen Skills. Ich habe ein weiteres Window hinzugefügt, dass verschiedene Informationen zur Skill zeigt. Dies ist eine Window_Base Klasse (so wie auch das Helpwindow). Wenn man also eine andere Skill anwählt, müssen sich, wie im Helpwindow, die Informationen des Zusatzwindows von mir automatisch verändern. Fürs Helpwindow wird dafür in der Window_Skill Klasse folgender Code verwendet:



def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end

Wie kann ich das für mein Zusatzwindow umsetzen (welchen Code muss ich zusätzlich in die Window_Skill Klasse scripten)?

The_Burrito
30.10.2007, 00:09
Warum verwendest du nicht einfach für dein Fenster auch die Window_Help Klasse? Die stellt dir das was du haben willst nämlich zur Verfügung, ohne das du es selber schreiben müsstest.