| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2011
Beiträge: 77
| Kollisionsabfrage über array
Ich hab ein paar Klassen geschrieben für eine art "spiel" darunter eine in der ich 2 methoden habe. Die eine(check_kollision) überprüft ob sich 2 objekte berühren von verschiedenen seiten und die andere(check_array_elements_kollision) hilft mir mehrere Objekte einzugeben in form eines Array von objekten/MCs um abzufragen ob sie sich mit diesem targetobjekt berühren. Hier diese 2 Methoden PHP-Code: Diese Methoden verwende ich in eine anderen Klasse um abzufragen falls der rückgabewert sich mit einem der strings übereinstimmt soll nicht mehr nach rechts /links etc gehen. Hier der Aufruf in der anderen Klassenmethode (da sie ziemlich gross ist füge ich nur die relevanten zeilen ein): PHP-Code: Alles läuft so wie erwartet jedoch hab ein kleines Problem mit der 2ten Methode(check_array_elements_kollision) von der ersten Klasse . Diese soll ja alle elemente von dem übergebenen array überprüfen ob sie sich mit dem targetMC berühren und falls das nicht der Fall ist soll weiter nach rechts bzw links gehen (dies wird durch die methode "moveObjects" der zweiten Klasse durchführt).Das Problem ist dass es nur mit dem erste Element vom Array funktioniert obwohl die moveObjects mit einem enterframelistener aufgerufen wird und da diese Funktion nicht auf das ganze Array durchgeführt wird wird das zielobject nicht daran gehindert weiterzugehen und deshalb kommen die anderen funktionen zum einsatz obwohl sie es ja nicht sollen. Damit ihr versteht was ich meine hab ich hier ein LINK dort könnt ihr sehen dass mit der ersten Box alles funktioniert kommt aber zu der zweiten box stopt er nicht sondern es greifen die anderen funktionen drauf die als ziel haben den character entlang der unebenen oberfläche zu positionieren. PS: Schenkt der Sprung/Fall Funktion sowie der unfertigen characteranimation bei bewegung keine Aufmerksamkeit da ich diese noch nicht abgeschlossen habe: Geändert von pixelsadist (01-11-2011 um 20:23 Uhr) |
| | |
| | #2 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
das kostet echt überwindung sich mit solchem Code auseinanderzusetzen. formatier ihn doch wenigstens ordentlich, dann wird sofort klarer, was wie zusammengehört, und wo eine Klammer wieder geschlossen wird. Zur Methode check_array_elements_kollision. angenommen der Spieler hat sich in eine unglückliche Lage gebracht: der Avatar kollidiert links mit Objekt 1 ausm Array, rechts mit 2, garnicht mit 3 und unten mit 4. welches dieser Ergebnisse soll dir die Funktion jetzt ausgeben? Und wieso die Funktion nicht das tut, was du erwartest? Weil return nach/mit dem testen des ersten Eintrags im Array die Schleife abbricht und die Funktion verlässt. |
| | |
| | #3 (permalink) | |
| Neuer User Registriert seit: Oct 2011
Beiträge: 77
| Zitat:
ich hab die array funktion ein wenig umgeschrieben: PHP-Code: und die abfrage in der movefunktion: PHP-Code: Mein Ziel ist es einfach nur zu überprüfen ob sich mindestens ein element ausm array sich mit target berührt falls das der fall ist soll abgebrochen und true ausgegeben werden und falls true in der movefunktion rauskommt soll er nicht mehr nach rechts bzw. links gehen Geändert von pixelsadist (02-11-2011 um 02:47 Uhr) | |
| | |
| | #4 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
spiel das mal durch, ober besser noch: nimm den Debugger: was passiert wenn das erste Elment im Array sagt hit =true, und das zweite dann sagt false, was steht dann am ende der Funktion in hit? edit: das hab ich jetzt erst gesehen: PHP-Code: hit=true wird da nach dem break nie gesetzt werden. PHP-Code: |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Oct 2011
Beiträge: 77
|
jo deine lösung funktioniert , vielen dank thomas ^^ also soll heissen das "for each" für alle elemente im array die regel gültig sein muss im gegensatz zur normalen schleife for () {} die die elemente einzel betrachtet . Geändert von pixelsadist (02-11-2011 um 14:13 Uhr) |
| | |
| | #6 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
nein for each läuft automatisch durch das Array und speichert dein jeweiligen eintrag in der Variable, ohne dass du dich noch um die Länge des Arrays oder der indexposition und dem hochzählen kümmern musst. das macht for each. PHP-Code: |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Oct 2011
Beiträge: 77
|
aber wenn das so ist müsste es mit der üblichen for-schleife auch funktionieren tut es aber nicht PHP-Code: wie würde eine funktionierende version mit dieser schleifenform aussehen ? Geändert von pixelsadist (02-11-2011 um 15:05 Uhr) |
| | |
| | #8 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
lass mich raten, das letzte Element in deinem Array wird ignoriert !? Nutz doch bitte mal den Debugger, und schau nach, was check_kollision für die einzelnen Einträge zurückgibt. (besonders für den letzten) |
| | |
| | #9 (permalink) | ||
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
Zitat:
PHP-Code: PHP-Code:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (02-11-2011 um 16:09 Uhr) | ||
| | |
| | #10 (permalink) | ||
| Neuer User Registriert seit: Oct 2011
Beiträge: 77
|
jetzt geht es auch mit der üblichen forschleife (das -1 war fehl am platz). Zitat:
Zitat:
Kennt jemand noch andere Möglichkeiten ? Geändert von pixelsadist (02-11-2011 um 18:01 Uhr) | ||
| | |
| | #11 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.866
|
wenn du nach links gehst wirst du schwer rechts anstossen, ausser du wirst geschubst. das würde dir 4 hitTests / Element einsparen. und die Kollisionstests mit dem Boden machst du scheinbar auch anderswo, damit kannst du auch oben und unten rausnehmen. das spart dir also insgesamt 6/10 hitTests. wenn du hiermit auch noch die Kollision mit dem Boden testest sind sind das 14/20 hitTests / Objekt eingespart. und bevor du jetzt anfängst redundanten Code in 4 verschiedenen Funktionen zu schreiben: übergib doch auch check_kollision einen Parameter der der Funktion sagt, was sie testen soll. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| External Array Class Global Array über alle views ? | chrisz | Flex programmieren | 1 | 11-12-2010 15:51 |
| btn dyn über ein array zuweisen | flozwo | ActionScript 2 | 2 | 14-02-2006 20:55 |
| array aus flash an php als array, über 80000 Werte | huegenbegger | PHP und MySQL | 28 | 18-08-2005 15:57 |
| Array über alles mc`s | Rogi | ActionScript 1 | 1 | 11-07-2005 08:06 |
| array kollisionsabfrage schneller? | tomsamson | Softwarearchitektur und Entwurfsmuster | 29 | 18-06-2003 15:10 |