Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 13.02.2019 uwzględniając wszystkie działy

  1. Konrad-GM

    Wyśrodkowanie textu

    Ok, przerobiłem swój kod żeby łamał słowa jak i linie, traktując ciąg spacji również jak słowo: /// scr_wrap_string(string,w) var text = argument0, len = argument1; var strlen = string_length(text); var i = 1, c = '', w = '', word = '', line = '', result = ''; while (i <= strlen) { c = string_char_at(text, i++); w = string_char_at(word, 1); // lamanie tekstu if (c == '#') { result += line + word + '#'; line = ''; word = ''; w = ''; continue; } // przelamujemy linie if (line != '' && string_width(line + word) > len) { result += line + '#'; line = ''; } // przelamujemy slowo if (string_width(word + c) > len) { line += word + '#'; word = ''; w = ''; } // budujemy slowo // ciag spacji traktujemy jako slowo if ((c == ' ' && (w == '' || w == ' ')) || (c != ' ' && w != ' ')) { word += c; } else { line += word; word = c; // linii nie zaczynamy spacja if (string_char_at(line, 1) == ' ') { line = ''; } } } result += line; result += word; return result; Jako, że teraz skrypt ten łamie tekst również w linii, nie potrzebujemy używać draw_text_ext a wystarczy draw_text: var text = scr_wrap_string("Lorem ipsum dolor sit amet, andverylongwordthatmustbesplitted", 100); draw_set_color(c_black); draw_rectangle(10, 10, 110, 210, false); draw_set_color(c_white); draw_text(10, 10, text);
    1 punkt
  2. gnysek

    Wyśrodkowanie textu

    A mój skrypt nie działał dobrze ? Nie ten z gml scripts, ten drugi (włącz sortowanie w temacie po dacie, a nie po ocenie). W skrypcie Kondrada-GM problemem jest fragment: if (c == ' ') { result += word; word = ''; } który jak widzi spację, uznaje, że słowo się zmieściło i dodaje na result, przestając zliczać - tymczasem result powinno się resetować wraz z dodaniem znaku # (a najlepiej jeśli znak C to spacja albo pierwszy znak w linii go nie dodawać). Czyli jakoś tak: var stack = '', result = '', text = 'Lorem ipsum dolor sit amet', len = 40; // 40px; for(i=1; i<=string_length(text); i++) var c = string_char_at(text, i); if (string_width(stack + c) > len { result += stack + '#'; stack = (c == ' ') ? '' : c; // W GMS1: if (c == ' ') stack = '' else stack = 'c'; } else { stack += c; } } result += stack; return stack;
    1 punkt
  3. Konrad-GM

    Wyśrodkowanie textu

    Cześć, możesz podzielić słowa które są dłuższe niż dana szerokość i rysować tekst za pomocą draw_text_ext. Skrypt do łamania słów: /// scr_wrap_words(string,w) var text = argument0, len = argument1; var strlen = string_length(text); var i = 1, c = '', word = '', result = ''; while (i < strlen + 1) { c = string_char_at(text, i++); if (string_width(word + c) > len) { word += '#'; } word += c; if (c == ' ') { result += word; word = ''; } } return result + word; W połączeniu z draw_draw_text: var text = scr_wrap_words("Lorem ipsum dolor sit amet, andverylongwordthatmustbesplitted.", 100); draw_set_color(c_black); draw_rectangle(10, 10, 110, 210, false); draw_set_color(c_white); draw_text_ext(10, 10, text, 15, 100); Rezultat powinien być wystarczający:
    1 punkt
  4. Flashek

    Nad czym aktualnie pracujesz?

    Jest progress...
    1 punkt
Ten Ranking jest ustawiony na Warszawa/GMT+01:00
×
×
  • Dodaj nową pozycję...