Label Textalign während der Laufzeit ändern.

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Label Textalign während der Laufzeit ändern.

Beitrag von Fightmeyer »

Hallo!

Ich hab mir ne Gui gebastelt, die mir den aktuellen Hotspotnamen anzeigt. Die wird dann immer neben dem Mauszeiger angezeigt. (so ähnlich wie in MI3 glaub ich)

Dazu hab ich ein entsprechend großes Textfeld auf die Gui gepackt, damit ich sicher sein kann, daß auch die längeren Namen vollständig angezeigt werden.

Je nach Mauszeigerposition soll die GUI dann rechts oder links neben dem Mauszeiger angezeigt werden. Das klappt auch problemlos. Allerdings müßte dann natürlich, damits auch schick aussieht, der Text entweder rechts oder linksbündig sein. Leider hab ich noch keinen Weg gefunden, das über den Code zur Laufzeit zu realisieren. Gibts da einen Weg???

Fightmeyer
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Ich nehme mal an, du meinst so in etwa wie die Karten bei LA-Spielen?
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Jau! Genau so. Wie gesagt, funzt alles prima. Mir fehlt nur noch die automatische Textausrichtung.
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

Code: Alles auswählen

lblHotspot.Width = GetTextWidth(lblHotspot.Text, lblHotspot.Font)+2;//+2 da bisschen größer als Text
Das verändert zwar nicht die Ausrichtung des Textes, macht aber das Label so groß wie seinen Text.
Glaube, dass hat die gleiche Auswirkung...
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Funzt leider nciht:

hotspotbezeichner.GetText(bla);
hotspotbezeichner.Width = GetTextWidth(bla, hotspotbezeichner.Font)+2;

Das Fenster bleibt immer gleich groß.
Ich hab so den Verdacht, daß er als Textvariable immer nur "@overhotspot@" nimmt. Das verbirgt sich ja letztendlich auch nur dahinter. Somit ist auch die Breite dann immer gleich. Schiete!!
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

versuch mal alternativ:

Code: Alles auswählen

if (GetLocationType(mouse. x, mouse.y) == eLocationHotspot){
   GetLocationName(mouse.x, mouse.y, bla);
   }
hotspotbezeichner.SetText(bla); 

hotspotbezeichner.Width = GetTextWidth(bla, hotspotbezeichner.Font)+2;
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Das funzt!!! :lol: Saustark! Vielen Dank!

EDIT: Außerdem geh ich so der Problematik aus dem Weg, daß der @overhotspot@ Befehl nur Hotspotnamen und keine Objektnamen auslesen kann.

Diese Variante ist wesentlich besser.
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

EDIT: Außerdem geh ich so der Problematik aus dem Weg, daß der @overhotspot@ Befehl nur Hotspotnamen und keine Objektnamen auslesen kann.
Also wenn ich mich nicht sehr irre liest overhotspot alle Namen, also hotspot, Charakter und Objekt. Aber das nur am Rande.
Antworten