PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Noch ne Frage^^ Font wechsel?



MrSerji
03.07.2012, 13:25
Îch hätte da noch ne Frage.
Wie wechselt man die Typo, sprich Schriftart?

In vielen XP-Spielen wird die Schriftart ausgetauscht, ich würd dies auch gern tun, leider weiß ich nicht wie man die bewerkstelligen muss, durch ein Skript oder wie?

Cornix
03.07.2012, 13:50
Es gibt eine Font-Klasse im XP.
Jede Instanz der Bitmap-Klasse kann eine eigene Instanz der Font-Klasse referenzieren welche dann die Schriftart, Größe, Farbe, und weitere Informationen zur Schrift beeinflusst welche mit diesem Bitmap gezeichnet wird.
Man kann ebenfalls die Standard-Werte der Font-Klasse ändern, diese Standard-Werte werden von jedem Bitmap benutzt welches kein spezielles Font zugeordnet bekommt.

Die Standard-Werte der Font-Klasse kann man zu jedem Zeitpunkt wie folgt ändern:

Font.default_name = "some string"
Font.default_size = some_int
Font.default_bold = some_boolean
Font.default_italic = some_boolean
Font.default_color = some_color_object_instance
Natürlich gelten diese Änderungen nur für jeglichen Text, welcher geschrieben wird nachdem die Änderungen durchgeführt wurden.

MrSerji
03.07.2012, 14:50
Bei mir gibts keine Klasse mit Fonts :/
Könntest du mir vllt zeigen wo das genau liegt?
Mit der SuFu des Makers find ich die Standard-Werte auch nciht :/


Allerdings konnte ich im Timer die Schrift ändern^^

Jetzt mal ncoh ne frage, wie macht man sich eine Box um den Timer?

Cornix
03.07.2012, 15:12
Du siehst die Klasse nicht im Script-Editor weil es eine Klasse des RGSS ist, also der Bibliothek dahinter.
Du kannst dir die Dokumentation der Klasse in der Hilfe-Datei durchlesen.

Und um dem Timer ein Window zu geben müsstest du die Klasse "Sprite_Timer" verändern.

Das ist zwar nicht getestet, aber falls du die Standard-Timer-Sprite-Klasse umschreiben würdest, dass sie ungefähr so wie folgt aussieht sollte es prinzipiell funktionieren:

class Sprite_Timer < Window
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super
self.width = 88 + 32
self.height = 48 + 32
self.x = 640 - self.width
self.y = 0
self.z = 500
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.name = "Arial"
self.contents.font.size = 32
self.update
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
if self.contents != nil
self.contents.dispose
end
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# Set timer to visible if working
self.visible = $game_system.timer_working
# If timer needs to be redrawn
if $game_system.timer / Graphics.frame_rate != @total_sec
# Clear window contents
self.contents.clear
# Calculate total number of seconds
@total_sec = $game_system.timer / Graphics.frame_rate
# Make a string for displaying the timer
min = @total_sec / 60
sec = @total_sec % 60
text = sprintf("%02d:%02d", min, sec)
# Draw timer
self.contents.font.color.set(255, 255, 255)
self.contents.draw_text(self.contents.rect, text, 1)
end
end
end
Es könnte sein, dass noch vereinzelnte Probleme auftauchen, aber so ungefähr sollte das Endergebnis aussehen.

MrSerji
03.07.2012, 15:29
Also muss ich die Font in der Hilfe-Datei ändern? oO

Ich blicke nicht mehr durch xD

Cornix
03.07.2012, 15:49
Du musst die Klasse überhaupt nicht ändern. Das kannst du auch garnicht.
Du musst lediglich die oben von mir genannten Funktionen mit den entsprechenden Parametern aufrufen.

Zum Beispiel:

Font.default_name = "Arial"
würde die standard Schriftart von allen Bitmaps, dessen Font nicht weiter spezifiziert worden ist, auf Arial setzen.

MrSerji
03.07.2012, 16:07
JO, hab ich schon geändert^^
Nur konnte ich die Schirft-fareb nciht ändern :/


Die Box wird nicht angezeigt :/
Ich spiel mal etwas damit rum, vllt klappts ja...

Cornix
03.07.2012, 16:14
Die Schriftfarbe änderst du über den Befehl:

Font.default_color = some_color_object

also, zum Beispiel, um die Schrift auf ein starkes Rot zu setzen:

Font.default_color = Color.new(255, 0, 0, 255)

Außerdem, von was für einer "Box" redest du?

MrSerji
03.07.2012, 17:16
Achso, man muss noch ein Color.new vor den Zahlen setzen xD
Hab da normal_color hingeschrieben und dann das standard für Weiß xD

Um den Timer.
Also so wie bei normalen Texten, nur das die auch bei dem TImer ist.
EIne weiße Schrift auf Schnee-Landschaft sieht man nicht :/

Cornix
03.07.2012, 17:20
Natürlich wird sie nicht angezeigt, ich habe nämlich bei meinem Code-Beispiel eine Zeile vergessen.
Du musst dem Fenster auch sagen, welchen Window-Skin es verwenden soll.
Daher musst du außerdem noch die folgende Zeile in den Code der "initialization"-Funktion einführen:

self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)

MrSerji
03.07.2012, 17:31
Hab ausprobiert, da kommt dann ne Fehlermeldung :/

Der Name der Windowskin ist Windowskin...
Hab ich auch eingegeben, funzt aber nicht :/

Muss das an eine bestimmter Stelle?

Cornix
03.07.2012, 17:32
Was für eine Fehlermeldung, bitte den genauen Wortlaut wiederholen.
Am besten du zeigst auch das Script welches den Fehler hervorruft.

MrSerji
03.07.2012, 17:35
Ach, ops xD
Musste man bei "name" den Namen der Windowskin hinschreiben?

Weil als der Name dort stand, kam ein Fehler.
Jetzt hab ich den nochmal ohne, also wo nur name steht versucht, jetzt gehts x3

Danke :)