Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

[C++] Obsługa formatu .gif przez clienta gry

Featured Replies

Opublikowano

Implementacja obsługi formatu .gif w kliencie gry możesz zastosować do animowanych interfejsów itp. 

 

Implementacja

📂 Lokalizacja pliku: 'EterLib -> GrpImage.cpp'

 

🔎Szukaj

Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterLib -> GrpImage.h'

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterLib -> Resource.cpp'

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterLib -> Resource.h'

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterPythonLib -> PythonWindow.cpp'

 

🔎Szukaj

 

Dodaj

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterPythonLib -> PythonWindow.h'

 

🔎Szukaj

 

Dodaj

 

 

 

📂 Lokalizacja pliku: 'EterPythonLib -> PythonWindowManager.cpp'

 

🔎Szukaj

 

Dodaj

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterPythonLib -> PythonWindowManager.h'

 

🔎Szukaj

 

Dodaj

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'EterPythonLib -> PythonWindowManagerModule.cpp'

 

🔎Szukaj

 

Dodaj

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'ScriptLib-> Resource.cpp'

 

🔎Szukaj

 

Dodaj

 

 

📂 Lokalizacja pliku: 'UserInterface -> UserInterface.cpp'

 

 

Dodaj na górze

 

 

📂 Lokalizacja pliku: 'root -> ui.py'

 

Doda na dole

 

 

Przykład użycia

 

 

Pobieranie

 

Skan

Opublikowano

Elegancko, przydatne rozwiązanie, czy załadowany plik gif jest automatycznie odtwarzany w pętli? Ułatwi to implementację animowanych elementów. 

Ps; fajnie gdybyś używał podświetlania składni wybierając język w jakim kod został napisany, będzie bardziej estetycznie, a po za tym sztos poradnik. 

Opublikowano
  • Autor
W dniu 29.03.2024 o 17:29, Sevence napisał(a):

Elegancko, przydatne rozwiązanie, czy załadowany plik gif jest automatycznie odtwarzany w pętli? Ułatwi to implementację animowanych elementów. 

Ps; fajnie gdybyś używał podświetlania składni wybierając język w jakim kod został napisany, będzie bardziej estetycznie, a po za tym sztos poradnik. 

Po załadowaniu pliku GIF, nie ma domyślnego automatycznego odtwarzania w pętli. Aby osiągnąć to zachowanie, konieczne będzie dodanie kodu obsługującego pętlę odtwarzania animacji w klasie CGifImageBox. Możliwe jest także dodanie metod do sterowania odtwarzaniem animacji, takich jak Play, Pause i Stop. Dodatkowo, można dodać parametr do metody LoadGif, aby umożliwić kontrolę nad pętlą odtwarzania, na przykład bool loop = true, który domyślnie byłby ustawiony na true.

 

jest to jednorazowe wywolanie gifa ale mozna cos z tym pokminic np loga gildi animowane czy logo serwera przy logowaniu na przezroczystym tle zamiast miliona obrazkow udających animacje jak ma wiekszosc serwerów. Kod z turka aczkolwiek działa i nie zamula clienta loadem obrazków 

 

Edytowane przez Sasori

  • 3 miesiące temu...
Opublikowano
W dniu 29.03.2024 o 17:46, Sasori napisał(a):

Po załadowaniu pliku GIF, nie ma domyślnego automatycznego odtwarzania w pętli. Aby osiągnąć to zachowanie, konieczne będzie dodanie kodu obsługującego pętlę odtwarzania animacji w klasie CGifImageBox. Możliwe jest także dodanie metod do sterowania odtwarzaniem animacji, takich jak Play, Pause i Stop. Dodatkowo, można dodać parametr do metody LoadGif, aby umożliwić kontrolę nad pętlą odtwarzania, na przykład bool loop = true, który domyślnie byłby ustawiony na true.

 

jest to jednorazowe wywolanie gifa ale mozna cos z tym pokminic np loga gildi animowane czy logo serwera przy logowaniu na przezroczystym tle zamiast miliona obrazkow udających animacje jak ma wiekszosc serwerów. Kod z turka aczkolwiek działa i nie zamula clienta loadem obrazków 

 

Właśnie, że domyślnie obrazek jest odtwarzany w pętli, bo klasa CGifImageBox dziedziczy po klasie CAniImageBox. Wystarczy zwrócić uwagę na metodę CAniImageBox::OnUpdate() w której jest iteracja po klatkach przy użyciu pola m_bycurIndex, które po osiągnięciu maksymalnego indeksu wraca z powrotem do 0, a dokładniej w tym miejscu:

CKod został skopiowany
		++m_bycurIndex;		if (m_bycurIndex >= m_ImageVector.size())		{			m_bycurIndex = 0;			OnEndFrame();		}

 

A zatem jeśli ktoś potrzebuje to może sobie dopisać funkcję do pojedynczego odtworzenia animacji, do zatrzymania po X czasie lub do wznowienia animacji.

 

Warto dodać, że to rozwiązanie nie działa na spakowane gify. Gif będzie wyświetlony tylko w momencie gdy będzie on luźno wrzucony do klienta. W przeciwnym wypadku dostaniemy informację zwrotną w postaci błędu podczas wczytywania gifa

  • 8 miesięcy temu...
Opublikowano
W dniu 18.07.2024 o 09:25, KoYGeR napisał(a):

Właśnie, że domyślnie obrazek jest odtwarzany w pętli, bo klasa CGifImageBox dziedziczy po klasie CAniImageBox. Wystarczy zwrócić uwagę na metodę CAniImageBox::OnUpdate() w której jest iteracja po klatkach przy użyciu pola m_bycurIndex, które po osiągnięciu maksymalnego indeksu wraca z powrotem do 0, a dokładniej w tym miejscu:

CKod został skopiowany
		++m_bycurIndex;		if (m_bycurIndex >= m_ImageVector.size())		{			m_bycurIndex = 0;			OnEndFrame();		}

 

A zatem jeśli ktoś potrzebuje to może sobie dopisać funkcję do pojedynczego odtworzenia animacji, do zatrzymania po X czasie lub do wznowienia animacji.

 

Warto dodać, że to rozwiązanie nie działa na spakowane gify. Gif będzie wyświetlony tylko w momencie gdy będzie on luźno wrzucony do klienta. W przeciwnym wypadku dostaniemy informację zwrotną w postaci błędu podczas wczytywania gifa

+1 dzięki!

Opublikowano
W dniu 30.03.2025 o 17:36, Arta napisał(a):

+1 dzięki!

ta ja też dziękuje, podwójnie za kolegę wyżej.

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

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.