2012-04-04 24 views
0

Ich habe ein Leinwandspiel in HTML5 gemacht und bin zu viel davon neu. Ich möchte nur Javascript verwenden, um meine Elemente zu erstellen (es ist einfacher, auf diese Weise in andere Websites einzubetten und ich fühle, dass es sauberer ist). Ich musste mein Spiel neu laden, um es wieder spielen zu können, aber ich möchte in der Lage sein, den Spielstand und mehrere andere Variablen im Auge zu behalten, ohne jedes in die URL (was ich gemacht habe) zu setzen, damit es wie das Spiel aussieht läuft noch. Ich werde auch "Power-Ups" und andere Dinge hinzufügen, die durch das Skript "erinnert" werden müssen.Mein Spiel spielt sich selbst?

Wie auch immer, hier ist meine Frage. Wenn ein Spieler einen anderen tötet, spielt sich das Spiel für eine Weile und macht meinen Computer sehr langsam, bis ich die Seite neu lade. Warum macht es das? Ich habe das Intervall für die Hauptfunktion (die das Spiel durchläuft und alles läuft) gelöscht und das hat dazu geführt, dass alles aufhört, sich zu bewegen - das tut es nicht mehr. Was ist hier falsch?

Das ist mein Spiel: http://dl.dropbox.com/u/11168436/game/game.html

Steuerung: Bewegen Sie den Skifahrer mit den Pfeiltasten und schießen mit M (Sie in Richtung schießen Sie das letzte Mal in bewegten). Der Snowboarder wird mit ESDF bewegt und schießt mit Q.

Danke für Ihre Zeit.

Antwort

0

Diese Linie kann die Ursache sein:

var interval = window.setInterval(main, 1);

dieses Intervall bringt bis zu sagen, 30, und Ihr Problem soll weggehen.

+0

Kein Glück. Alles sauste wie vorher herum. – sc8ing

+0

@ sc8ing Dang. Suchen Sie nach rekursiven Funktionsaufrufen. –

+0

Was sind rekursive Funktionsaufrufe? – sc8ing

4

Ok heres was im Grunde passierte, das variable Intervall existierte in verschiedenen Bereichen. Sie haben also versucht, ein Intervall zu löschen. Aber es war nicht der richtige Bereich, also wurde die Variable interval wirklich nie gelöscht (Sie haben auch die falsche Syntax zum Löschen eines Intervalls verwendet).

Working Demo

Sie sollten mehr über function scope erfahren. Sie hatten var interval an ein paar verschiedenen Stellen, eine globale und eine lokal in einer Funktion. Dies erzeugt zwei separate Variablen namens interval. Hier ist ein kurzes Beispiel,

var a = 10; 
function(){ 
    var a = 1; 
    console.log(a); 
    // a will equal 1 

} 

console.log(a); 
// a will equal 10 

Wie dem auch sei, was ich es zu beheben hat ect eine globale Variable für interval und diese Variable deklariert wurde, ist die einzige, verwendet jetzt löschen.

Nächste Ausgabe sah ich ist, dass Sie

verwendet haben

interval = window.clearInterval(interval)

Sie brauchen nur

window.clearInterval(interval)

Seine einen guten ersten Versuch rufen immer nur zu lernen :). Hoffentlich verstehst du, was ich im Arbeitsbeispiel getan habe. Vergleichen Sie es einfach mit Ihrem Code, es gibt nur ein paar kleine Unterschiede, die alle auf den Umfang Ihrer Variablen bezogen sind interval

Verwandte Themen