Skocz do zawartości

draw, string_delete, string_copy, usuwam nieistniejące znaki


Rekomendowane odpowiedzi

Witajcie :)

 

Mam w evencie DRAW obj_all funkcję draw_text(x,y,first_button_text), natomiast w STEP coś takiego:

 

GML
if allow_write=true//jeżeli włączono pisanie

{

if first_button=true//i wolno pisać w sekcji 1.

{

first_button_text=string_copy(keyboard_string,1,string_length(keyboard_string))//to do str FBT skopiuj zawartość KS

string_delete(keyboard_string,1,string_length(keyboard_string))//usuń zawartość KS

if string_length(first_button_text)>2//jeżeli liczba znaków w FBT > 2

{

var str_saved = string_copy(first_button_text, 1, 2 );//to zapisz FBT do SS

string_delete(first_button_text,1,string_length(first_button_text))//wyczyść FBT

first_button_text=string_copy(str_saved,1,2)//przepisz z powrotem z SS do FBT

string_delete(str_saved,1,2)//usuń SS

}

 

if (keyboard_check_pressed(vk_backspace))//jeżeli naciśnięto Backspace

{

var str_saved = string_copy(first_button_text,1,string_length(first_button_text)-1);//to przenieś zawartość FBT bez ostatniego znaku do SS

string_delete(first_button_text,1,string_length(first_button_text))//wyczyść FBT

first_button_text=string_copy(str_saved,1,string_length(str_saved))////przepisz z powrotem z SS do FBT (już bez ostatniego znaku)

string_delete(str_saved,1,string_length(str_saved))//usuń SS

}

}

 

}

 

I wszystko działa ok, poza jednym małym mankamentem: gdy wpiszę 3 znaki, to mimo że widzę prawidłowo tylko 2, backspace muszę nacisnąć 3 razy, jakby tamte znaki były gdzieś, tyle że niewidoczne. Jak mogę to naprawić?

 

Wiem że można by to załatwić prościej, ale mam do pisania 2 pola między którymi można przeskakiwać, i każdorazowo trzeba zapisać zawartość, a backspace musi działać :D

Odnośnik do komentarza
Udostępnij na innych stronach

chyba jescze treba czyscic keyboard_string.

jesli zrozumialem twoj przyklad to tak jest ok:

GML
if allow_write=true{//jeżeli włączono pisanie

if first_button=true {//i wolno pisać w sekcji 1.

first_button_text=string_copy(keyboard_string,1,string_length(keyboard_string))//to do str FBT skopiuj zawartość KS

string_delete(keyboard_string,1,string_length(keyboard_string))//usuń zawartość KS

if string_length(first_button_text)>2{//jeżeli liczba znaków w FBT > 2

first_button_text=string_copy(first_button_text,1,2)//przepisz z powrotem z SS do FBT

keyboard_string=first_button_text; //czysci keyboard_string od zbednych znakow

}

if (keyboard_check_pressed(vk_backspace)) {//jeżeli naciśnięto Backspace

first_button_text=string_copy(first_button_text,1,string_length(first_button_text)-1);

}

}

}

napisze max 2 znaky i na vk_backspace zaraz vymazuje ostatni znak. teraz tylko dostosuj dla swych potrzeb

dla przyslosci przeczytaj help :) string_delete zvraca copie stringu, zatem niemoglo dzialac pomyslne

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...