Text außerhalb des Feldes ausblenden

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Text außerhalb des Feldes ausblenden

    Hallo,
    ich habe mir ein kleines Textfeld gescriptet dass per draw_string_ext auch Zeilenumbrüche hat. Jetzt möchte ich, dass man beliebig viel Text schreiben kann , jedoch das Textfeld irgendwann nicht mehr größer wird. Dafür müsste dieser aber verschwinden sobald er außerhalb des Textfeldes ist. Ich habe es shcon mit bm_subtract versucht, jedoch bin ich nicht so gut in Blend Modes. Hat jemand eine idee wie das gehen kann?(Bitte keine views)
    Danke schön!
    Partik
  • Ich weiß nicht was du mit Blend Modes vorhast, aber dir wird nichts anderes übrigbleiben, als zu messen, wie viel Platz der Text verbraucht und ihn dann geeignet abzuschneiden. Dazu sollten dir die Funktionen

    GML-Quellcode

    1. string_width_ext, string_height_ext

    behilflich sein. Eine etwas unsaubere Methode wäre es, den Text auf ein Surface zu zeichnen, das nur so groß ist, wie das eingabefeld.

    © 2008 by Teamgrill Productions
  • Mach bevor ein weiteres Zeichen zum String dazu addiert wird (per Tastendruck), eine Abfrage, ob das nächste Zeichen die Höhe überschreiten würde und wenn nicht, dann brich ab.

    GML-Quellcode

    1. if(string_height(str_text)+keyboard_lastchar>500)
    2. {
    3. exit
    4. }
    5. else
    6. {
    7. //zeichen kann dazu addiert werden
    8. }

    500 ist die Maximale höhe und str_text der String in dem der eingegebene Text gespeichert wird
    Das selbe gibts auch mit string_width(), für die Breite.
  • Also Nochmal:
    Ich hätte gerne eine Textbox bei der der Text größer sein kann als sie selbst, und mann dann durch die Box scrollen kann.
    Ich möchte dass wenn man also den Text schreibt und er höher wird als die Textbox, er nicht größer wird und aus der textbox hinaus geht, sondern eben drin ist, und scrollbar.
    Dazu müste man den Text abschneiden, sobald er aus der Textbox herausgehen würde. Und wie das geht, weiß ich nicht.
  • Schau mal hier: String bzw Text
    mit diesen Funktionen solltest du dir was zusammen basteln können. mit string_length bekommst du beispielsweiße die anzahl der zeichen. mit string_copy kannst du einen bestimmten teil aus dem string rausschneiden. mit string_width bekommst du die breite eines strings in pixeln. du könntest z.B. deinen string in mehrere neue strings zerlegen, die eine bestimmte breite nicht überschreiben (z.B. mit for-schleifen) und dann einfach nur die zeilen drawen, die man sehen soll. (das aufteilen der strings am besten nicht im stepevent, weil das sonnst ständig gemacht wird, obwohl es reicht, wenn es einmal passiert.)
  • Nein, ich versteh' schon was Partik meint und kenne das Problem das er hat sehr gut.
    Ich selbst hab eine solide GUI Engine geschrieben. (bzw. bin noch dran).
    Leider werde ich diese hier (noch nicht) hochladen, da ich diese ersteinmal ausschließlich in meinen Projekten einzubauen werde, versteht sich. ;)
    Aber dennoch hab ich hier die Lösung für dich:

    Zeichne dein Text innerhalb einer weiteren Oberfläche bzw. Surface. Mehr ist das nicht.
    Klingt komisch ... ist aber so. :D
    Also hier hab ich dir mal ein Beispiel gemacht (s. Anhang).

    Ein Danke ist kostenlos! ;)

    PS: Ich selbst versuche es so gut wie es geht "surfaces" zu vermeiden. Da sie öffters mal verbuggt sind (Anzeigefehler bei gewissen Grafikkartenaktionen. Da im VRAM gespeichert.)
    PPS: Schreibfehler im Beispiel Text in diesem Example nicht beachten! ^^
    Dateien
    >>> Dies soll eine Signatur darstellen und ebenso den Zweck entfremden wie so oft in Foren. Dieser wäre den Leser über eine Kontaktaufnahme zu informieren. In der Paxis wird dieser aber verwendet um so halbwitzige bis überhaupt nicht komische Kommentare wie dieser zu verbreiten. Immerhin frisst dieser Signatur ausnahmsweise kein großen Platz weg.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DGML ()