#11. Wracamy po przerwie!


Hej! Witajcie po dłuższej przerwie :). Myślę, że na wstępie mogę zacząć od wytłumaczenia się, więc głównym powodem był brak motywacji do działania, mogę też zwalać to na uczelnię, że dużo nowego materiału trzeba się uczyć itp. ale to będzie oszukiwanie samego siebie i nie będę tego robił :D.


Przeglądałem sobie ostatnio sam swoje wpisy i zauważyłem, że nie są one przyjazne, piszę coś o swojej aplikacji, chociaż tak naprawdę sam nie miałbym ochoty tego czytać gdybym był tutaj widzem. Zacząłem się zastanawiać…

Co zrobić żeby to poprawić, w końcu mamy tutaj za zadanie(w ramach konkursu) podzielenie się wiedzą którą nabywamy  i najważniejsze, mamy DAĆ SIĘ POZNAĆ.  I to jest właśnie to, MAMY DAĆ SIĘ POZNAĆ, widzicie będąc szczerym i obiektywnym o swoim projekcie mogę powiedzieć, że jest on po prostu mało interesujący i pisząc bloga ‘technicznego’ nie będzie tam nic ciekawego z jednego głównego powodu:

  •   NIE MAM WYSTARCZAJĄCEJ WIEDZY / NIE JESTEM EKSPERTEM

 


Jak to usprawnić?


Nie możecie odczuć tego samego co ja, ale w tym momencie zatrzymałem się w pisaniu i zastanowiłem się głębiej … bardziej filozoficznie i przytoczę tu pewien cytat:

Gdzie bowiem ład, tam i harmonia; gdzie zaś harmonia,
tam odpowiedni na wszystko czas; gdzie zaś odpowiedni czas , tam i pożytek.

Można ten cytat odnieść do wielu aspektów naszego życia, ja akurat odniosę go do mojego bloga, mojego projektu oraz do mojego codziennego życia, tego jak każdy ze swoich dni zaplanuję i jak później ten plan zrealizuję. Jeżeli wszystko jest ułożone i wszystko ma swój czas tam będzie pożytek, prędzej lub później ale będzie!

 


PROJEKT


W ostatnim poście o projekcie miałem planowanie, więc trzeba się wypowiedzieć co zostało zrobione.

W moim projekcie mam 3 screeny(nie liczymy abstrakcyjnego):

  1. Menu
  2. GamePlay
  3. Score

 

 

 

Każdy ze screenów dziedziczy po AbstractScreenie, który za to implementuje interfejs Screen. Interfejs ‘Screen’ udostępnia nam 7 metod:

Nas interesuje metoda dispose(), która powinna być wywoływana kiedy screen zwalnia swoje zasoby. Generalnie polega to na tym, że u mnie każdy screen ma dostęp do tej metody więc wystarczy, że ją nadpiszę z dodaniem usuwania odpowiedniego zasobu. No właśnie nie, u mnie pojawia się dodatkowy problem, mianowicie:

  • zmiana screena nie znajduje się w klasach które dziedziczą po abstract screenie
  • metoda dispose() nie wywołuje się automatycznie

Rozwiązanie problemu pierwszego:

Zasoby, które chcę zwolnić to są w większości przypadków obiekty klasy Texture. Jeżeli zaglądamy głębiej do klasy Texture to widzimy: dziedziczy ona po klasie ‘GLTexture’, ta klasa z kolei implementuje interfejs ‘Disposable’ no i problem rozwiązany bo interfejs udostępnia nam metodę dispose().

 

Rozwiązanie problemu drugiego:

To był poważniejszy problem, bo jak mogę wywołać tę metodę wiedząc, że zmiana screena znajduje się w innej klasie. Strasznie ciężko mi się to tłumaczy, więc zrobimy to na przykładzie Menu screena:

Menu screen tworzy dwa obiekty dwóch różnych klas: PlayButton oraz SettingsButton i to w nich jest wbudowane przejście do innego screena. Ja chcę usunąć obiekty tych klas w MenuScreenie. Mogę wywołać metodę dispose(), ale gdzie? Przecież nie mogę jej wywołać przy zmianie screena w innej klasie bo to nie ma zasięgu, więc zajrzymy jeszcze raz do interfejsu Screen . Jest tam metoda hide(), która jest uruchamiana automatycznie za każdym razem gdy zmienia się screen… I TO JEST TO. Za każdym razem gdy zmienia się screen, więc w abstrakcyjnym screenie wrzuciłem metodę dispose() do hide co mi da, że za każdym razem gdy zmieni się screen wywoła się metoda dispose. Teraz wystarczy, że w każdym ze screenów po prostu stworzę metodę dispose z usuwaniem obiektów klas, które stworzyłem i po problemie.

 

A jednak problem się pojawił:

Niestety, w klasie GameDotService, mam dźwięk, który także chciałbym usuwać przy zmianie screena. Więc wrzuciłem usuwanie do metody dispose i pojawia się problem, bo zmienia mi się screen i ostatni dźwięk, który powinien trwać sekundę urywa się w połowie. Rozumiem, że zostaje usunięty tylko czy nie mógłby poczekać te pół sekundy dłużej?

 

 

Dobra , tyle na dziś, wydaje mi się, że dopóki nie doszedłem do ‘sekcji technicznej’ to był to całkiem interesujący wpis :D. Takie moje odczucie indywidualne. W tym tygodniu postaram się jeszcze zarzucić jakimś wpisem w czwartek lub piątek. Tak mówiłem, że będę wrzucał wtorki>czwartki>soboty, ale myślę, że taki wpis jak dziś jest bardziej interesujący pod względem jakościowym i mentalnym, a żeby takie wpisy tworzyć, trzeba mieć wenę i być nieco spragnionym tego 🙂  Tyle na dziś do usłyszenia kolejnym razem!

You may also like...

2 Responses

  1. Powodzenia w konkursie! Ja właśnie napisałem wpis o tym, co mnie motywuje w prowadzeniu bloga. Zapraszam do mnie 😀

Leave a Reply

Your email address will not be published. Required fields are marked *