Verschachtelte Types löschen
Übersicht

![]() |
marcel_bohnBetreff: Verschachtelte Types löschen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie der Titel schon sagt kann ich meine verschachtelten types nicht entfernen. Hab mir schon einige stunden den kopf darüber zerbrochen aber noch keine Lösung gefunden. Ich glaub ich versteh bei den verschachtelten types irgendetwas falsch.
hier mal ein Beispiel: BlitzMax: [AUSKLAPPEN]
jetzt müsste ich doch 5 "player" haben, die jede auf ein individuelles "imgage" haben bzw. darauf zeigen, ich kann zwar das image der player verändern: BlitzMax: [AUSKLAPPEN]
aber wenn ich nun das image entfernen will, werden mehrere images gelöscht BlitzMax: [AUSKLAPPEN]
ich habe gehofft, das das image automatisch entfernt wird wenn das type das darauf zeigt gelöscht wird, aber das ist leider nicht der Fall... bitte hilfe! |
||
- Zuletzt bearbeitet von marcel_bohn am Di, Apr 24, 2012 18:44, insgesamt einmal bearbeitet
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zu ersteinmal würde ich dir empfehlen SuperStrict zu benutzen, hilft manchmal ungemein durchzublicken.
Desweiteren ist es fragwürdig, das Bild des Spielers zu löschen anstatt das ganze irgendwie sauber unterzubringen. Und eine For-Schleife die von 0 bis 5 geht hat 6 Durchläufe, nicht 5 (dementsprechend hast du auch 6 Instanzen). Aber zu deinem Problem: Du scheinst lediglich einen Verweis auf ein Bild zu machen und nicht ein Bild zu laden. Denn du schreibstBlitzMax: [AUSKLAPPEN] img.sprite = sprite1 '<--irgendein sprite
Hier siehst du ja selbst, dass einfach die Variable "sprite1" übernommen wird, nichts anderes. Wenn du das Bild tatsächlich löschen willst, solltest du sprite1 löschen, aber ohne SuperStrict oder anständige Deklarierung deiner Variablen ist es schwer zu sehen, wie du die "image"-Klasse aufgebaut hast (was sind denn das für Variablen?!). Desweiteren solltest du, falls du den Spieler nach seinem Ableben erhalten willst, darüber nachdenken, ob du den Spieler wirklich löschen willst oder ob du einfach nur eine Abfrage machst, ob der Spieler noch lebt und dementsprechend einfach nur Bilder anzeigst, denn wenn du im späteren Spielverlauf neue Spieler einbringst und für jeden Spieler noch einmal das Bild lädst, geht das ziemlich auf den Speicher und die Ladezeit. Daher lieber vermeiden. Wie eben schon gesagt, lieber alle Bilder einmal laden und erst bei Beendigung des Spiels löschen und nicht für jeden Spieler ein einzelnes Bild laden. |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry, ich änder das mal schnell | ||
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
erstmal danke für die antwort, aber der Code oben ist nur ein pseydo-code! ich lade das bild tatsächlich nur einmal und verlinke es mit meinem "image" objekt. Ich möchte nicht das "Timage" löschen sondern das objekt "image". das funktioniert wie oben beschrieben leider nicht! | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bitte editiere deine Beiträge anstatt Doppelposts zu machen, danke.
SuperStrict benutzen, immer. Ein lauffähiger Code, der das Problem demonstriert, ist immer das einfachste für uns zum ausprobieren. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
so nach ca. 2h Fehlersuche habe ich den fehler gefunden, ich habe jetzt einen neuen Code geschrieben mit dem ihr das Problem testen könnt. Der Fehler wird durch die compare methode ausgelöst, entfernt diese und es funktioniert problemlos!
BlitzMax: [AUSKLAPPEN]
dann hätte ich noch ne frage, wenn ich superstrict mache dann zeigt es mir ein fehler bei der compare methode an. Wie mache ich das es funktioniert |
||
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Statt
BlitzMax: [AUSKLAPPEN] Method compare(other:Object) schreibst du BlitzMax: [AUSKLAPPEN] Method compare:Int(other:Object) Die Methode hat ja einen Return-Wert, daher muss dieser auch angegeben werden (Int). Wenn du das nächste mal Fehler hast, wärs auch hilfreich zu schreiben, was der Debugger für einen Fehler ausgibt. Du gehst ja auch nicht zum Arzt und sagst, dass es dir Scheiße geht ohne irgendwelche Symptome zu beschreiben. |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
alles klar xD merk ich mir fürs nächste mal, danke für deine Hilfe! | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das tiefer liegende Problem ist, dass beim Löschen die Werte mit Compare verglichen werden. Da du nicht mehr die Objekt Adressen sondern y werte vergleichst, die alle 0 sind, wird das erste Objekt entfernt.
Du könntest eine Sortierfunktion benutzen, oder den TLink speichern, um ihn nicht in der Liste suchen zu müssen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group