Skocz do zawartości

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

Opublikowano

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

 

Implementacja

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

 

Dodaj na górze

🔐 Ukryta Treść 🔐

 

 

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

 

Doda na dole

🔐 Ukryta Treść 🔐

 

 

Przykład użycia

🔐 Ukryta Treść 🔐

 

 

Pobieranie

🔐 Ukryta Treść 🔐

 

Skan

🔐 Ukryta Treść 🔐

Featured Replies

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. 

  • Sevence zmienił(a) tytuł na [C++] Obsługa formatu .gif przez clienta gry
Opublikowano
  • Autor
18 minut temu, 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

Opublikowano

Dzięki to się przyda

Opublikowano
  • Premium

thx

Opublikowano

thx

  • 3 miesiące temu...
Opublikowano
  • Programista
W dniu 29.03.2024 o 18: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:

		++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 11: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:

		++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
7 minut temu, Arta napisał(a):

+1 dzięki!

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

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...