In libgdx, screen.setScreen()
ruft nicht automatisch rechts ab. Muss ich in einem überschriebenen setScreen zuerst screen.dispose
anrufen und dann super.setScreen
anrufen oder den ersteren anrufen? Ich weiß, dass dies wie doppelte Frage scheint, aber immer noch wollte ich wissen, weil super.setScreen
Anrufe screen.hide
. Ruft hide
nach dispose
Run-Time-Safe? Ist es eine schlechte Übung? Ich mache ein 3D-Spiel basierend auf this und this Beispiel. Hier erweitere ich GameName
Klasse von Game
und versuchen, setScreen
zu übersteuern, so dass Sie dispose aufrufen, wenn der Bildschirm nicht null ist und dann super.setScreen
aufrufen.Ist es sicher, Screen.hide() nach Screen.dispose() in LibGDX aufzurufen?
Antwort
screen.dispose()
wird nie von LibGDX aufgerufen. Sie müssen es manuell tun, bevor Sie den Verweis auf Ihren Bildschirm löschen. Wenn Sie die Screen-Instanz nicht wiederverwenden möchten, ist screen.hide()
screen.dispose()
der perfekte Ort dafür.
screen.hide()
wird nie als Reaktion auf Android-Ereignisse aufgerufen.
Ich empfehle nicht überschreiben game.setScreen()
, um Bildschirme zu entsorgen, es sei denn, Sie wissen sicher, dass Sie keine Bildschirminstanzen wiederverwenden wollen. In den meisten einfachen Spielen möchten Sie sie wiederverwenden, anstatt Zeit für das wiederholte Entladen und erneute Laden von Ressourcen zu verschwenden.
Zwei Arten von verfügbaren Assets (SpriteBatch, Texture, Stage, ...), einer wird auf einem anderen Bildschirm geteilt und ein anderer ist für einen bestimmten Bildschirm spezifisch.
Gemeinsame Vermögenswerte sollten von Spiel
dispose()
Methode entfernt werden.Screen spezifische Assets sollten durch
dispose()
Methode von Screen entsorgt werden, aber Bildschirm dispose() nie aufgerufen, so dass Sie es explizit aufrufen müssen.
Wenn Sie Ihren Bildschirm hide()
Methode der Bildschirm aufgerufen ändern, damit Sie dispose()
Methode von hide()
Methode aufrufen sollte.
- 1. Ist es sicher, Casted Funktionszeiger aufzurufen?
- 2. Ist es sicher, TWinControl.Update von TGraphicControl.Paint aufzurufen?
- 3. Ist es sicher, die Methode View.post (runnable) im Hauptthread aufzurufen?
- 4. Ist es sicher, einen RCW von einem Finalizer aus aufzurufen?
- 5. Ist es sicher, kclass.memberProperties für ein unbekanntes Objekt (Any) aufzurufen?
- 6. Ist es sicher, nicht konstante Elementfunktionen für rvalue-Objekte aufzurufen?
- 7. Ist es sicher, CFRunLoopStop von einem anderen Thread aufzurufen?
- 8. Ist es sicher, pthread_create mit einem Mutex aufzurufen?
- 9. Ist es sicher, ConnectivityManager requestNetwork() im Haupt-Thread aufzurufen?
- 10. Ist es notwendig, das Ende nach json in node.js aufzurufen?
- 11. Ist es nicht sicher, Accessormethoden in init- und dealloc-Methoden in Objective C aufzurufen?
- 12. ist es sicher? Einfügen der Daten in db nach Benutzer ..?
- 13. Ist es richtig, java.lang.String unveränderlich aufzurufen?
- 14. Ist es sicher, SyncLock und MemoryBarrier aufzurufen, auch wenn Sie nicht in einem separaten Thread sind?
- 15. Ist es sicher, foreach auf leeren PHP-Arrays in PHP 5.4 aufzurufen?
- 16. Ist es sicher, eine statische synchronisierte Methode aus nicht verwandten Klassen aufzurufen?
- 17. Ist es sicher, Initialisierer mehrere Male auf dem gleichen "allokierten" Objekt aufzurufen?
- 18. Konstruktorproblem delegieren - Ist es sicher?
- 19. Meteor - Wie sicher ist es?
- 20. in ExtJS, ist es besser, Model.save() oder Store.Sync() aufzurufen?
- 21. Ist es sicher, SSL_CTX nach dem Erstellen von SSL freizugeben
- 22. Ist es sicher, bus.Publish von einem NServiceBus-Handler aufzurufen, wenn Sie den Verteiler verwenden?
- 23. Ist es sicher, eine C-Funktion mit mehr Argumenten aufzurufen, als sie erwartet?
- 24. Ist es möglich, doInBackground von onPostExecute aufzurufen?
- 25. HttpURLConnection: Ist es notwendig, connect() aufzurufen?
- 26. Nach einem Pfad in Libgdx
- 27. Zertifikat in 'res' - ist es sicher?
- 28. Libgdx Sound, wenn es fertig ist
- 29. Ist es sicher, ReadAsString und dann ReadAsStream auf einem HttpClient-Response-Inhalt aufzurufen?
- 30. Ist es sicher, eval zu verwenden, um die Coffeescript-Klasse dynamisch aufzurufen? Diese
Aber in Android wird Hide aufgerufen, wenn der Benutzer einen Anruf oder ein Spiel verliert Fokus verlieren. Das Hinzufügen von "Inside Hide" ist also eine schlechte Idee. – Anutrix
@Anutrix, was die Methode hide() von Screen denken, rufen Sie hide() von Android auf. Beide sind unterschiedliche Methoden. – Aryan
@Anutrix, Nein, tut es nicht. 'pause()' wird aufgerufen, wenn das Spiel den Fokus verliert, aber nicht 'hide()'. – Tenfour04