Ergebnis 1 bis 2 von 2

Thema: Anfänger: Text dauerhaft anzeigen (für z.B. Interfaces)

  1. #1

    Anfänger: Text dauerhaft anzeigen (für z.B. Interfaces)

    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? =)

  2. #2
    Du könntest dieses Script hier verwenden welches ich einmal schnell geschrieben habe:
    Code:
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •