Abfragefehler, logischer Fehler, o.Ä. in JS
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfragen
array
bereich
code
darstellen
fehler
funktion
http
information
karpfen
karte
links beobachten
null
problem
server
teil
url
verarbeiten
wurm
zugreifen
-
Hallo, ich habe eine noch ziemlich primitive Karte erstellt. Es geht mir gerade nur um die Funktionsweise in Javascript, also meckert bitte nicht an dem miesen HTML herum, denn wie ihr gleich sehen werdet, beginnt sogar die Entwicklungsversionsnummer mit einer 0.
Wie bereits gesagt, handelt es sich um eine Karte. Diese Karte weist zwei Fehler im JS und einen im HTML (ab und zu kann es vorkommen, dass man die Grafiken mit weg zieht), den ich aber kenne und beheben werde, sobald die im JS-Teil mich nicht mehr quälen, auf. Die Fehler im JS-Teil dagegen finde ich nicht. Zunächst mal das Script, das ich in Pastebin habe, damit ihr Zeilennummern und Syntaxhighlighting sehen könnt.
1. Fehler: Das cachen funktioniert nicht. Inzwischen habe ich eine cache-Funktion eingebaut (die ich selbstverständlich noch für alle Richtungen erweitern werde). Zuvor war es aber auch schon immer so, dass er ständig Informationen vom Server holte. Auch dann, wenn ich die Karte um ein Kästchen nach links und wieder eines nach rechts verschob. Beides mal holte und holt er Informationen. Eigentlich soll abgefragt werden, ob er schon alle zur Darstellung nötigen Informationen hat, oder ob welche gebraucht werden. Inzwischen habe ich schon 4 von 8 Gebieten, aus denen Daten gecached werden sollen (rechts, unten, links, oben bereits realisiert, rechts unten, links unten, links oben, rechts oben kommen noch), eingetragen. Dies hatte aber nur zur Folge, dass noch mehr vom Server abgefragt wird. Irgendwo in dem Bereich, in dem geprüft wird, ob alle nötigen Informationen vorhanden sind, muss also der Wurm drin sein.
2. Fehler: Das Sliden ist nach links und nach oben sehr schnell, nach rechts und nach unten aber kaum vorhanden. Das kann man gut an den Zahlen links beobachten, die aber im Moment wegen den vielen Serveranfragen nicht rund laufen.
Ich habe das Script auch auf einen Server geladen, auf den ich auch die PHP-Scripte + DB kopiert habe, damit ihr seht, was bei den Anfragen vom Server zurück kommt und auch, damit ihr das ganze in Aktion sehen könnt, weil Ajax ja nur auf den Server, von dem das Script kommt, zugreifen kann.
Das ist die Antwort, wenn man den Bereich 1|1 bis 10|10 auslesen will, also das muss das Script verarbeiten:
Das Verarbeiten klappt super, das Darstellen auch wunderbar, nur leider klappt das cachen, bzw. wahrscheinlich das Abfragen, ob alles bereits im Cache ist, nicht, und das Sliden verhält sich sehr merkwürdig.new Array(new Array(0, 1, 1, 1, 1, 0, 0, 0, 0, 0), new Array(0, 1, 1, 1, 1, 0, 0, 0, 0, 0), new Array(0, 1, 1, 1, 1, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 1, 1, 1, 1, 0, 0), new Array(0, 0, 0, 0, 1, 1, 1, 1, 0, 0), new Array(0, 0, 0, 0, 1, 1, 1, 1, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
Edit: x ist selbstverständlich von links nach rechts und y von oben nach unten gemessen. Außerdem beginnt die Karte mit 1|1 und nicht mit 0|0. Der Server gibt gerade auch über 0 in die Negativwerte hinaus Nullen für die Felder aus und wenn ihr euch wundert, wieso der Server sagt, es sei kein Bereich ausgewählt, wenn das Script einen Bereich, der mit x oder y = 0 beginnt oder dort endet, abfragen will: JS übergibt dann nicht 0, sondern gar nichts, weswegen der Server das Fehlen von notwendigen Informationen erkennt. Ich habe an dieser Stelle kein Fix in JS vor, weil später gar nicht mehr angefragt werden soll, wenn eine Koordinate unter 1 gehen sollte.
Das 2D-Array ist - um es möglichst einfach auf dem Server erstellen und im Browser darstellen zu können - so aufgebaut: array[y][x].
Beitrag zuletzt geändert: 17.7.2011 17:24:08 von drafed-map -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Doppelpost-Sperre aufheb!
-
Danke, Karpfen, dass ich hier noch mal was schreiben darf.
Also, ich habe das Problem jetzt doch noch selbst lösen können. Wie? Dazu ein Auszug aus der PN an Karpfen:Ich habe nun ewig selbst mit der Fehlersuche verbracht, nur, um heraus zu finden, dass mein Script absolut fehlerfrei ist und es nur ein Problem gab, da ich in Programmiersprachen eine Funktion gewohnt bin, die abfragt, ob eine Variable gesetzt ist, eine solche in JS aber nicht existiert und ich deswegen auf andere Weise prüfen musste, ob etwas in ihr steht. Das habe ich - wie sonst auch (try / exception hat nicht immer geklappt) - mit if(varName) gemacht. Dummerweise kommen vom Server auch Nullen, welche dafür sorgen, dass nicht klar ist, ob die Variable existiert und = 0 ist, oder ob sie nicht existiert. Als Variablen habe ich hier übrigens Array-Elemente angesprochen. Einsen und Zweien daraus gemacht und alles klappert.
Und damit ist das Thema erledigt, also kann hier geschlossen werden. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage