Skocz do zawartości
TO_mek

[Android] Pauza i zawieszenie aplikacji

Rekomendowane odpowiedzi

Witam!

Podczas gdy załączę pauzę w grach na androidzie i jednoczesnym zablokowaniu telefonu gra się zawiesza. Po odblokowaniu telefonu jest czarny ekran i grę trzeba ubić.

W przypadku jednej pauzę mam w mało elegancki sposób poprzez "show_message('PAUZA)", co w windowsie się sprawdzało. Wiem, że obecnie jest to wg manuala funkcja wyłącznie do debugera więc w innej gierce zrobiłem już "swoją" pauzę:

GML
global.pauza:=!global.pauza

 

if global.pauza == true {

instance_deactivate_all(true);

instance_activate_object(zm_glowne_obj);

draw_sprite(pauza_spr,0,room_width/2, room_height/2);

part_particles_clear(Sname);//Wygaszenie aktywnych partycli

effect_clear();//usuwa snieg

background_visible[0]:=false;

} else {

instance_activate_all();// region(0, view_yview[0], room_width, view_hview[0],true); //aktywacja obiektow wewnatrz ekranu

background_visible[0]:=true;

}

 

Niestety efekt na androidzie jest ten sam. Dodatkowo zauważyłem, że w obecnej wersji GM:S nie wyświetla się sprite z obrazkiem pauzy z pauza_spr (ani na androidzie ani pod winda).

Dodatkowo w tej drugiej grze obsługę wyjścia z gry na backspace zrobiłem na asynchronicznym evencie Dialog (msg:=show_question_async('Quit')) i ten komunikat wyświetla się prawidłowo nawet podczas pauzy i efektu "zawieszenia" podczas zablokowania i ponownego odblokowania telefonu pod androidem.

Macie pomysł jak przerobić pauzę tak by działała prawidłowo?

 

 

 

EDIT:

Teraz tak patrzę i sam się zastanawiam jak to ma działać jak aktywny pozostaje jeden obiekt zm_glowne_obj, który nie ma obsługi wyświetlania ekranu.

 

EDIT2:

Jednak na androidzie nie następuje zwis tylko gra niczego aktywnie nie wyświetla i zablokowaniu/odblokowaniu gubi ostatnio wyświetlany ekran i jest tylko czarna tło. Jednak ekran dalej jest aktywny i stukając miejsce gdzie się przełącza pauzę, ekran reaguje i gra ponownie zaczyna działać.

 

Swoją drogą dlaczego cokolwiek jest wyświetlane po deaktywacji obiektu odpowiadającego za rysowanie, chyba tylko dla zmyłki :)

 

EDIT3:

Pod windą wystarczy na tej pauzie zwinąć grę na pasek i po powrocie gra ma czarne tło (ale też aktywne i da się ją odpauzować na "czuja"). Co ciekawe starsza wersja gry pod windę kompilowana pod GM:HTML5 wyświetla grafikę na pauzie po zwinięciu na pasek włącznie z ikonką pauzy (draw_sprite(pauza_spr,0,room_width/2, room_height/2);).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A w jakim to jest evencie?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
A w jakim to jest evencie?

 

 

W Global Left Pressed obiektu który pozostaje aktywnym.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No to draw_sprite nie zadziała, skoro ten event trwa ułamek sekundy (i nie jest eventem draw) :) btw. a masz wyłączone draw background color w roomie ? może stąd po minimalizacji ekran się czyści

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Z twojego opisu wynika, że coś jest źle u Ciebie. Odradzam używanie deaktywacji pod czas pauzy.

Jeżeli gra na mobilu straci fokus (zostanie zrzucona, ale nie wyłączona) i zacznie się używać innych aplikacji, to w chwili gdy urządzeniu zabraknie pamięci na obsługę aktywnych aplikacji, twoja gra może się zaciąć na amen. Jeżeli testujesz na słabym urządzeniu, to może to być jedną z przyczyn. Polecam też sprawdzać os_is_paused() prócz naciśnięcia pauzy.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Odradzam używanie deaktywacji pod czas pauzy.

Polecam też sprawdzać os_is_paused() prócz naciśnięcia pauzy.

 

 

No ale wszelkie liczniki, wyświetlanie animacji itp. musi być zatrzymane na czas pauzy, zostawiam jeden obiekt obsługujący "odpauzowanie". Faktycznie brak w nim obsługi wyświetlania czegokolwiek więc nie działa (choć pod windą grafika nie znika i to wprowadza w błąd, mam wyłączone draw background color w roomie więc pewnie z tego powodu rysowanie podczas pauzy zachowuje się nieprzewidywalnie).

 

Zastanawiam się nad obsługą os_is_paused - gdzie to najlepiej umieścić aby było w każdej chwili wywołane. W jaki sposób telefon to obsługuje? W momencie gdy następuje wygaszenie ekranu czy przychodzi rozmowa to aplikacja działa dalej w tle aż napotka obsługę os_is_paused a jedynie wycisza dźwięk a gdy tej obsługi nie ma to się mogą dziać z aplikacją różne dziwne rzeczy?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×