Schuss-Type löschen funktioniert nicht
Übersicht

OrbitBetreff: Schuss-Type löschen funktioniert nicht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
wenn ich in einer for-schleife den Schuss lösche, der auf einen Gegner trifft, bekomme ich eine Fehlermeldung ("Object does not exist"). For s.schuss = Each schuss For Geg.Gegner = Each Gegner If ImagesCollide(SchussImg,s\Xpos,s\Ypos,0,GegImage,Geg\Xpos,Geg\Ypos,0) Then Geg\health = Geg\health - 2 Delete s If Geg\health = 0 Then DrawImage Explosion,Geg\xpos-25,Geg\ypos-25 Delete Geg Punkte = Punkte + 20 EndIf EndIf Next Next fg Orbit |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist ein recht beliebter Fehler ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Müsste man dann aber nicht 2-mal Exit verwendet (2 For Schleifen)? | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, da die Schusschleife ja weiterlaufen soll. Nur der gelöschte Schuss soll nicht mehr überprüft werden und durch das Exit verlässt man die Gegnerschleife und die Schusschleife rattert zum nächsten Schuss weiter, welcher dann wieder mit allen Gegnern benutzt wird. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest auch mit der Null prüfung gucken ob der schuss existiert wenn ja dann kannst du ihn löschen:
Code: [AUSKLAPPEN] If s <> Null then Delete s
|
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Würde nicht helfen, da Imagecollide und alles austickt.
Deswegen das Exit. Damit ist das Problem dann auch gelöst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
kreisman |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm is mir gar nicht aufgefallen, aber man kann die Prüfung auch weiter nach vorne setzten
Code: [AUSKLAPPEN] For s.schuss = Each schuss
For Geg.Gegner = Each Gegner If s <> Null then If ImagesCollide(SchussImg,s\Xpos,s\Ypos,0,GegImage,Geg\Xpos,Geg\Ypos,0) Then Geg\health = Geg\health - 2 Delete s End If If Geg\health = 0 Then DrawImage Explosion,Geg\xpos-25,Geg\ypos-25 Delete Geg Punkte = Punkte + 20 EndIf EndIf Next Next |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group