Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [XP] Inhalt eines Fensters aktualisieren



Shisu
23.11.2010, 15:36
Hallo,

ich bin zurzeit damit beschäftigt alle standard Window-Klassen durch meine eigenen zu ersetzen.
Jetzt habe ich für Fähigkeiten, Gegenstände und Ausrüstung eine Scene gebastelt, die mir anhand des
Index in einem seperaten Window Informationen über dieses Objekt anzeigt.

An sich funktioniert das Ganze, nur verändert sich der Inhalt nicht, wenn sich der Index ändert.
Beispiel:
Wird das Skillmenü geöffnet, ist der Cursor/Index auf "Heal" bzw. 0 und zeigt im Fenster daneben alles über den Skill mit der ID an. Ändert sich der Index, bleibt der Inhalt von "Heal" und wird nicht zu "Greater Heal" wie es eigentlich sein müsste.

Die SkillID bekomme ich mittels:

@skill_window = Skill1.new(@actor)
@skill_window2 = Skill2.new(@actor, @skill_window.skill)Ich vermute es liegt daran, dass es nicht geupdatet wird, aber ich weiß nicht, wo ich da ansetzen muss.

Edit: Irgendwie hatte ich einen Dreher im Threadnamen. xD"

Cornix
23.11.2010, 16:24
Es wäre sehr hilfreich wenn du etwas mehr von dem Code zeigen würdest, mit den gegebenen Informationen kann man dir nur schwer helfen, beziehungsweise müssten wir raten wo dein Fehler liegt und was du machen müsstest.

SMWma
24.11.2010, 15:19
du müsstest irgendwo folgendes reintippen:


@skill_window2.update
@skill_window.update

Abermit so wenig Code kann ich dir nichts genaueres sagen ^,^

€dit: War mal sowas von falsch xD

ETeCe
27.11.2010, 14:36
Generell wird von dem, was du in das Fenster malen lässt nichts "upgedatet".
Sobald du etwas anderes im Fenster stehen haben willst musst du also die Bildfläche mit dem neuen Inhalt übermalen.

In den Fensterklassen des Standard-Skriptsets übernimmt die Methode refresh in der Regel diese Funktion, in der zuerst via
contents.clear
der alte Inhalt des Fensters gelöscht wird um anschließend den neuen Inhalt zu malen.
Mit Fensterinstanz.refresh kannst du somit, wenn notwendig, jederzeit ein Neuzeichnen des Fensters erzwingen.


An dieser Stelle einfach via
@skill_window2 = Skill2.new(@actor, @skill_window.skill)
ein neues Fenster zu erstellen führt natürlich auch irgendwie zum Ziel...
Allerdings ist es geraten vor dem Löschen von alten Fenstern diese zunächst freizugeben:
Das passiert einfach mit dem Aufruf der Methode dispose.


(Hoffe mal meine Interpretation des Problems war nicht zuuu sehr am Thema vorbei... ansonsten schließ ich mal den Code-Anfragen der anderen an :) )

Shisu
28.11.2010, 22:04
Danke für die Anworten. Ich habe das jetzt allerdings gelöst, indem ich mir das Prinzip der Window_Help Klasse zu Nutze gemacht habe, und es funktioniert bestens. Darauf hätte ich früher kommen können. >.<

Trotzdem, danke für die Beteiligung. :3