kostenloser Webspace werbefrei: lima-city


[JS] OOP - Rekursiver aufruf mit "setTimeout"?

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    masterakio1995

    Kostenloser Webspace von masterakio1995

    masterakio1995 hat kostenlosen Webspace.

    Hallo liebe Community,
    ich bräuchte eine Möglichkeit, damit sich die Methode eines Objekts rekursiv aufrufen kann.

    Bisher habe ich es so versucht:
    setTimeout("this.move('down', 0)", 5);


    oder (player ist die Klasse):

    setTimeout("player.move('down', 0)", 5);


    funktionieren tut es so (player1 ist das Objekt):

    setTimeout("player1.move('down', 0)", 5);


    allerdings will ich es relativ Adressieren und nicht absolut, da ich nicht nur 1 Spieler / Objekt habe. Hat wer eine Idee wie ich das machen kann?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    Gibt 2 Möglichkeiten:
    var movement = "down", fields = 1;
    setTimeout(player.move, 5, movement, fields);

    Damit werden die Argumente nach der Zeit als Argumente in der Reihenfolge übergeben.

    Normalerweise löst man dies aber über eine Closure:
    var movement = "down", fields = 1;
    setTimeout(function(){
      player.move(movement, fields);
    }, 5);


    Ich hoffe das Problem hatte ich richtig verstanden, sonst frag einfach nochmal nach.

    Liebe Grüße
  4. Autor dieses Themas

    masterakio1995

    Kostenloser Webspace von masterakio1995

    masterakio1995 hat kostenlosen Webspace.

    Ich glaube nicht, dass das mein Problem löst da ich damit ja immernoch nicht das Objekt anspreche oder?
  5. g****e

    Du würdest das Objekt "player" ansprechen. Sonst formuliere mal genau, was du möchtest.
    Was ich nu dachte: Du möchtest vom Objekt player die Methode move aufrufen, mit den 2 Argumenten, dynamisch. Dafür übergibst du keinen String als ersten Parameter an das setTimeout, sondern die Referenz der Funktion, welche gecalled werden soll. In Javascript ist nahebei alles (aber nur nahe bei) mittels Referenzen gelöst. Daher kannst du die Referenz der Funktion übergeben samt Parameter.
    Oder möchtest du von JEDEM Player die Funktion aufrufen? Dann musst du alle Instanzen in einem Objekt oder einem Array zusammenfassen:
    var playerArr = [];
    playerArr.push(new Player(1));
    playerArr.push(new Player(2));
    playerArr.push(new Player(3));
    
    for (var x in playerArr) {
      setTimeout(playerArr[x].move, 0, direction, fields);
    }


    Alternativ erklär mal bitte ein bisschen genauer, was das Problem ist, und was das Ziel ist. Vielleicht bin ich auch einfach zu blöd, um das Problem wirklich zu erkennen.

    Liebe Grüße
  6. Autor dieses Themas

    masterakio1995

    Kostenloser Webspace von masterakio1995

    masterakio1995 hat kostenlosen Webspace.

    Referezen das war das Stichwort danke :)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!