PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger: Text dauerhaft anzeigen (für z.B. Interfaces)



Tiro&Millet
03.03.2013, 21:45
Hi!

Bin ziemlich unbedarft bei der Benutzung des RMXP. Hab jetzt ein Script, welches
mir Text auf dem Bildschirm anzeigt.

ungefähr:
self.contents.draw_text(x, y, 200, 32, $data_actors[2].name)

Das Problem: Der Text verschwindet nach ein paar Sekunden wieder und ich muss das Script in einer Schleife immer neu aufrufen, was das Spiel ruckeln lässt.
Ich möchte den Text aber gerne permanent anzeigen lassen (ist ein Spiel auf einer einzigen 20x15 Map).
Jmd ne Lösung für mich? =)

Cornix
03.03.2013, 22:48
Du könntest dieses Script hier verwenden welches ich einmal schnell geschrieben habe:

module Interface

BITMAP_REF = Bitmap.new(1,1)

@sprite_text = nil
@x = 0
@y = 0
@text = ""

def Interface.setup(font_name = "Arial", size = 22, bold = false, italic = false, color = Color.new(255, 255, 255))
BITMAP_REF.font.name = font_name
BITMAP_REF.font.size = size
BITMAP_REF.font.color = color
BITMAP_REF.font.bold = bold
BITMAP_REF.font.italic = italic
if @sprite_text != nil
if @sprite_text.bitmap != nil
@sprite_text.bitmap.dispose
end
text_rect = BITMAP_REF.text_size(@text)
@sprite_text.bitmap = Bitmap.new(text_rect.width, text_rect.height)
@sprite_text.bitmap.font = BITMAP_REF.font
@sprite_text.bitmap.draw_text(text_rect, @text)
end
end

def Interface.set_text(text)
@text = text
if @sprite_text == nil
@sprite_text = Sprite.new
@sprite_text.x = @x
@sprite_text.y = @y
@sprite_text.z = 99999
end
if @sprite_text.bitmap != nil
@sprite_text.bitmap.dispose
end
text_rect = BITMAP_REF.text_size(@text)
@sprite_text.bitmap = Bitmap.new(text_rect.width, text_rect.height)
@sprite_text.bitmap.font = BITMAP_REF.font
@sprite_text.bitmap.draw_text(text_rect, @text)
end

def Interface.set_pos(x, y)
@x = x
@y = y
@sprite_text.x = @x
@sprite_text.y = @y
end

def Interface.dispose
if @sprite_text != nil && @sprite_text.bitmap != nil
@sprite_text.bitmap.dispose
end
if @sprite_text != nil
@sprite_text.dispose
end
end

end
Du hast im Grunde die folgenden 4 wichtigen Funktionen:
Interface.setup(font_name, font_size, bold, italic, color)
Interface.set_text(text)
Interface.set_pos(x, y)
Interface.dispose()

Die Funktionen sollten eigentlich sehr selbst erklärend sein.
Mit Interface.setup(...) kannst du die verschiedenen Einstellungen für den Text treffen. Angefangen mit dem Fontnamen (als Text, also mit Anführungszeichen), der Schriftgröße als Zahl, einer Angabe ob der Text Fett sein soll (true oder false), einer Angabe ob der Text kursiv sein soll (true oder false) und einer Textfarbe in dem Format Color.new(R, G, B, A) wobei R, G, B und A jeweils eine ganze Zahl von 0 bis 255 sind.
Ein Beispielaufruf wäre:
Interface.setup("Arial", 22, true, false, Color.new(255, 0, 0, 255))

Mit Interface.set_text(text) kannst du den Text einstellen welcher dargestellt werden soll. Du kannst ihn damit zu jedem Zeitpunkt ändern.

Mit Interface.set_pos(x, y) setzt du die X- und Y-Position der linken oberen Ecke des Textes.

Mit Interface.dispose() kannst du den Text komplett vom Bildschirm entfernen.

Das Script ist an sich sehr einfach und sollte eigentlich auch für einen Anfänger recht leicht veränderbar sein.