2017-10-04 2 views
0

Ich mache ein kleines Spiel (wie ein Cookie Clicker, aber eine CS: GO Version), wo ich OOP lernen musste, also bin ich wirklich neu in diesem Programmtyp und irgendwann , tritt ein Problem auf.Werte ändern sich nicht richtig, selbe für Variable

Ich bin mir ziemlich sicher, dass dies ein Problem mit dem Oszilloskop ist, aber wie löst man das?

Hier ist mein Code (Ich werde weiter mein Problem erklären):

Der Prototyp:

function amelioration(Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2) { 
    this.Class1 = Class1; 
    this.Class2 = Class2; 
    this.Nom = Nom; 
    this.Nombre = Nombre; 
    this.Prix = Prix; 
    this.Ajout1 = Ajout1; 
    this.Ajout2 = Ajout2; 
} 

    var glockClicker = new amelioration(".glockBtn .clickerUpgInpt1", ".glockBtn .clickerUpgInpt2", "glockClicker", 0, 20, 1, 1); 

Die Funktion (mit dem Problem):

function buy(varAmelioration, Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2, Multiplicateur) { 
     if (euroCount >= Prix) { 
      Nombre += 1; 
      euroCount -= Prix; 
      Prix *= Multiplicateur; 
      euroPerSec += Ajout1; 
      euroPerClick += Ajout2; 
      $("#caseSpot .casePerSec").val(euroPerSec); 
      $(Class1).val(Nombre); 
      Prix = parseInt(Prix); 
      $(Class2).val(Prix); 
      varAmelioration = new amelioration(Class1, Class2, Nom, Nombre, Prix, Ajout1, Ajout2); 
     } 
    } 

Die Veranstaltung:

$(".glockBtn").click(function() { 
     buy(glockClicker, ".glockBtn .clickerUpgInpt1", ".glockBtn .clickerUpgInpt2", glockClicker, glockClicker["Nombre"], glockClicker["Prix"], glockClicker["Ajout1"], glockClicker["Ajout2"], 1.5); 
    }); 

Also jetzt, dass Sie all dies hier haben, ist mein Problem. Wenn ich "das Ereignis" auslösen, "der Prototyp" macht seine Sache dann "die Funktion kauft()" auch sein Ding.

Aber wenn ich nachtriggern ein zweites Mal „das Ereignis“ nichts geändert, werden alle Werte nicht ändern (Preis = „Prix“ ist immer noch die gleichen, etc ...) und ich verstehe nicht, Warum habe ich versucht, der Variablen "glockClicker", die Sie in "der Prototyp" finden können, einen neuen Wert zuzuweisen, aber immer noch nicht die Werte ändern, möchte ich helfen, was nicht richtig oder Hilfe zu finden für eine Möglichkeit, Werte eines Objekts zu ändern, als wäre es eine Variable.

Ich hoffe, ich bin klar genug, wenn nicht nur sagen Sie mir, was Sie nicht verstanden haben.

Kurzversion meines Code:

function f(x) { 
    this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar) { 
    myVar += 1; 
    console.log(myVar); 
} 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 
+0

Ihr Problem wieder werden kann dediziert nach: 'Funktion f (x) {x = 2; } var x = 1; f (x); console.log (x); // 1'. – melpomene

+0

Ok ich gebe eine kurze Version meines Codes –

+0

... Ok Leute Ich fand das Problem wieder von mir selbst, aber dank Melpomene, der die Idee gab, eine kurze Version des Codes zu machen, die viel einfacher zu testen und zu testen war spiel, ich gebe morgen die antwort, weil ich heute abend keine zeit habe –

Antwort

0

-Code nicht funktioniert:

function f(x) { 
this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar) { 
    myVar += 1; 
    console.log(myVar); 
} 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

b(a["x"]); 
console.log(a); 
console.log(a["x"]); 

Code, der funktioniert:

function f(x) { 
this.x = x; 
} 
var a = new f(1); 
console.log(f); 

function b(myVar, val) { 
    myVar[val] += 1; 
    console.log(myVar[val]); 
} 

b(a, "x"); 
console.log(a); 
console.log(a["x"]); 

b(a, "x"); 
console.log(a); 
console.log(a["x"]);