Podczas korzystania z SKEmitterNode z maksymalną liczbą cząstek na liczbę, dokumentacja mówi, że przestanie generować cząstki. Moje pytanie brzmi: czy istnieje sposób, aby powiedzieć, że tak się stało? Chcę usunąć emitera cząstek ze sceny, gdy wykonała swoją pracę.Jak mogę sprawdzić, kiedy węzeł SKEmitterNode osiągnął maksymalną liczbę cząstek?
Odpowiedz
Można obliczyć, kiedy emiter jest gotowy.
Na przykład, jeśli numParticlesToEmit
jest ustawione na 1000, a particleBirthRate
ma wartość 100, cząstka zostanie wykonana, wysyłając nowe cząstki po 10 sekundach. Następnie musisz dodać particleLifeTime
z połową particleLifeTimeRange
, aby uwzględnić fakt, że cząsteczki czasu pozostaną na ekranie. Następnie emiter nie tylko emituje nowe cząstki, ale także ostatnią i/lub najdłużej emitowaną cząstkę zostanie usunięta z ekranu.
Zakładając em
to emiter:
CGFloat seconds = em.numParticlesToEmit/em.particleBirthRate +
em.particleLifetime + em.particleLifetimeRange/2;
Następnie można wykonać selektora z czasem oczekiwania lub uruchomić akcję z danym zwłoki być powiadomiony, gdy emiter cząstek jest wykonywana.
Nie jestem w stanie znaleźć sposobu na sprawdzenie liczby aktywnych cząstek. Myślałem, że może to było możliwe z własnością dzieci dziedziczy po SKNode, ale to nie działa.
zauważył, że właściwość particleAction AN SKEmitterNode, który zawiera ten blurb:
Dodawanie skomplikowanych działań cząstek może poważnie wpływać na osiągi emitera cząstek. Ponadto, ponieważ cząstki nie istnieją jako jawny węzeł, którym można manipulować, nie można usunąć akcji z istniejących cząstek.
Jest możliwe, że możesz wykorzystać SKAction performSelector do powiadamiania o aktywnych cząsteczkach. Kiedy skończy się ten strumień, możesz założyć, że nie pozostały żadne cząstki.
Niezbyt eleganckie lub idealne rozwiązanie w żaden sposób, a ja sam byłbym zainteresowany lepszym rozwiązaniem na pewno.
- 1. zespół Development osiągnął maksymalną liczbę zarejestrowanych urządzeń iPhone
- 2. Android - skąd mogę wiedzieć, kiedy gridview osiągnął dno?
- 3. Automatycznie ustawić maksymalną liczbę zadań mapowania na węzeł na liczbę rdzeni?
- 4. Jak mogę wymusić maksymalną liczbę dzieci w węźle?
- 5. LINQ: Jak grupy przez maksymalną liczbę elementów
- 6. ustaw maksymalną liczbę linii uilabel
- 7. Jak uzyskać maksymalną liczbę określonej długości
- 8. OpenSSL konfiguruje maksymalną liczbę połączeń
- 9. Jak ograniczyć maksymalną liczbę równoległych wątków w perlu
- 10. SpriteKit SKEmitterNode targetNode krach EXC_BAD_ACCESS
- 11. Biblioteka cząstek
- 12. Ustaw maksymalną liczbę linii tekstu dla EditText
- 13. Czy OkHttpClient ma maksymalną liczbę ponownych prób
- 14. Przekroczono maksymalną liczbę bibliotek DLL w R
- 15. Jak mogę sprawdzić łączną liczbę instalacji dla mojego rozszerzenia chrome?
- 16. Android Jak mogę sprawdzić liczbę plików w katalogu
- 17. Jak mogę sprawdzić liczbę trafień dla każdej reguły w iptables?
- 18. Help: Osiągnięto maksymalną liczbę klientów - Usterka segmentacji
- 19. JavaScript sprawdzić, czy węzeł dziecko jest elementem lub tekst węzeł
- 20. Dziennik zdarzeń aplikacji przekraczający maksymalną dozwoloną liczbę
- 21. Jak ustawić maksymalną liczbę pracowników w paczce/matlabpool z konsoli?
- 22. iPhone SDK - jak mogę sprawdzić, kiedy animacja się zakończyła?
- 23. Jak mogę sprawdzić, kiedy funkcja została dodana do Perla?
- 24. Jak mogę sprawdzić, kiedy UIWebView zakończyło rysowanie do kontekstu?
- 25. Limit żądania aplikacji Facebook osiągnął
- 26. Wykryj UIScrollview bottom osiągnął
- 27. Jak ustawić maksymalną liczbę procesów lub wątków MySQL?
- 28. Jak sprawdzić łączną liczbę pobrań aplikacji ios.?
- 29. Jak mogę ustalić maksymalną wartość pid_t?
- 30. System cząstek libGDX
O wiele lepsze rozwiązanie, zupełnie błędnie przeczytałem pytanie iz jakiegoś powodu myślałem, że numParticlesToEmit było nieznane. Matematyka jest cudowna. – prototypical