Text scrollbar machen :)

  • GM 8
  • Text scrollbar machen :)

    Hey Leute ;)

    Ich bin ziemlich am Anfang bei Game Maker und habe auch nach vielen rumprobieren und Forum lesen irgendwie nicht das gefunden was ich brauche. Obwohl ich mir schon ziemlich sicher bin das es das schon hier gab, weil es bestimmt total simpel ist :D

    Also ich habe mir von blackspark die http erweiterung geholt, das läuft auch soweit, das txt Dokument was ich daraus aufrufe ist nur ziemlich lang und passt somit nicht in meinen Room. Von daher soll es scrollbar sein, wie löse ich das ?
    Im Moment rufe ich das Dokument dann wie folgt auf:

    GML-Quellcode

    1. draw_text(10,160,http_request_get_buffer(request));


    Dann würde mich noch am Rande interessieren, wie ich es hinbekomme, dass er auch die Zeilenabstände nicht rauskürzt

    Grüße
  • Du kannst zum Beispiel an der y Position eine Variable abziehen, die erhöht wird, wenn man das Mausrad betätigt. Du nimmst zum Beispiel eine Variable scroll. Wenn man Mausrad nach unten dreht erhöhst du die Variable um einen bestimmten Wert und nach oben verringerst du den Wert. Dann ziehst du diesen Wert von der Zeichenposition ab.

    GML-Quellcode

    1. draw_text(10,160-scroll,http_request_get_buffer(request));


    Bezüglich der Zeilenumbrüche musst du diese ins "GM-Format" umwandeln. Je nachdem welches Zeichen den zeilenumbruch darstellt, musst du mit string_replace_all die Zeichen in eine # umwandeln (# ist der Zeilenumbruch für den GM).

    © 2008 by Teamgrill Productions
  • Je nachdem wie es denn eingepasst werden soll könntest du auch ein Surface benutzen um den Text nur in einem bestimmten Bereich sichtbar zu machen. (gegebenfalls auch oben und unten sanft ausblenden)

    Um eine Scrollbar darzustellen musst du lediglich die höhe der darzustellenden Fläche auf die real benötigte Texthöhe umrechen sowie die Position.


    Nachdem mir meine Käsetaschen verkokelt sind hab ich dir mal ein leicht verständliches Beispiel geschrieben nach meiner Lösung. Eine Scrollbar muss allerdings selbst hinzugefügt werden (siehe Kommentar bei vbox_draw).

    Kleine Besonderheit hier: deine Textbox ist transparent da der Hintergrund der Surface beim Rendern gelöscht wird.

    Edit: vbox_set_text() ist allerdings falsch wie ich seh. Lösche den Code der die Surface neu erstellt und führe anschließend vbox_render() durch.
    Dateien
    • VirtualBox.rar

      (9,88 kB, 125 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von famous ()

  • Wenn du <br> am Zeilenende hast dann nehm text = string_replace_all(text, "<br>", chr(10));

    Falls du eine txt Datei hochgeladen hast solltest du das EOF (end-of-line) Zeichen entfernen.
    Dazu danach einfach noch text = string_replace_all(text, chr(13), "");