Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 22:35

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



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

Discussion on [JS] OOP - Rekursiver aufruf mit "setTimeout"? within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
Masterakio1995's Avatar
 
elite*gold: 8
Join Date: Apr 2009
Posts: 2,977
Received Thanks: 855
[JS] OOP - Rekursiver aufruf mit "setTimeout"?

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

Bisher habe ich es so versucht:
Code:
setTimeout("this.move('down', 0)", 5);
oder (player ist die Klasse):

Code:
setTimeout("player.move('down', 0)", 5);
funktionieren tut es so (player1 ist das Objekt):

Code:
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?
Masterakio1995 is offline  
Old 08/31/2013, 22:21   #2

 
Synatex's Avatar
 
elite*gold: 25
Join Date: Apr 2010
Posts: 1,009
Received Thanks: 316
Nunja, sich ne Variable bauen die das ganze steuert.

PHP Code:
var keepMoving true;

var 
move = function() {
   if(
keepMoving) {
       
move();
   }
}; 
Synatex is offline  
Old 08/31/2013, 22:29   #3
 
Masterakio1995's Avatar
 
elite*gold: 8
Join Date: Apr 2009
Posts: 2,977
Received Thanks: 855
Quote:
Originally Posted by Synatex View Post
Nunja, sich ne Variable bauen die das ganze steuert.

PHP Code:
var keepMoving true;

var 
move = function() {
   if(
keepMoving) {
       
move();
   }
}; 
Normalerweise wäre das eine Möglichkeit, allerdings glaube ich das dadurch keine flüssige Animation ensteht bzw sie zu schnell ausgeführt wird. Und mit einem Sleep Befehl würde sich ein anderer Teil des Skriptes verzögern was ich vermeiden möchte.
Masterakio1995 is offline  
Old 08/31/2013, 23:16   #4

 
Synatex's Avatar
 
elite*gold: 25
Join Date: Apr 2010
Posts: 1,009
Received Thanks: 316
PHP Code:
var keepMoving true

var 
move = function() { 
   if(
keepMoving) {
       
// Verzögerung um 0,5 Sekunden
       
setTimeout(function() {
           
move();
       }, 
500);
   } 
}; 
Ist ja wohl nicht wirklich schwer die da reinzubauen^^
Synatex is offline  
Old 08/31/2013, 23:19   #5
 
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
"Sleep" gibt es in Javascript nicht. Du kannst nur asynchron programmieren.

Ja, das würde zu schnell ausgeführt - es führte (in der ersten Form) zu einem Stapelüberlauf, da es in Javascript kein gleichzeitiges Ausführen gibt: alle Funktionen und Rückrufe werden schön nacheinander ausgeführt.

Möglich ist es aber so (mit setInterval):
Es könnte auch setTimeout statt setInterval verwendet werden, dann müsste entsprechend in move erneut setTimeout aufgerufen werden, wie Synatex schrieb.
Tasiro is offline  
Old 09/01/2013, 00:22   #6

 
マルコ's Avatar
 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
Ein sleep zu programmieren ist aber wirklich nicht schwer.
Einfach aktuelle Zeit in ne Variable und in ner while Schleife gegen die aktuelle Zeit testen, bis die aktuelle Zeit größer oder gleich der gespeicherten Zeit plus der time2wait ist.
Aber nur, falls dir der sequentielle Ansatz lieber ist.
マルコ is offline  
Old 09/01/2013, 00:42   #7
 
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
Wem es Spaß macht, die Oberfläche einzufrieren, kann das gerne tun (sofern es im Kontext einer Seite ausgeführt wird, wie es normalerweise der Fall ist). In Javascript gibt es kaum eine synchrone Operation, nur new XMLHttpRequest ().open ("GET", url, false), alert und ein paar andere Funktionen (welche aus genau diesem Grund nicht genutzt werden sollten), sowie eine synchrone API für IndexedDB und FileSystem - aber diese beiden nur in einem WorkerGlobalScope (Thread oder Prozess). Für WebSockets etwa gibt es keine synchrone API (auch in einem WorkerGlobalScope), weil es dabei durchaus mehrere Sekunden bis zu einer Antwort brauchen kann, im Gegensatz zu einigen Millisekunden.
Tasiro is offline  
Thanks
2 Users
Old 09/01/2013, 03:35   #8

 
マルコ's Avatar
 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
wenn er nur eine Verzögerung im Millisekundenbereich braucht, dann wäre diese Lösung durchaus nutzbar. Bzw. es kommt auch darauf an, wie der Rest programmiert ist...
Ich selbst habe noch nie einen solchen Sleep benötigt, kenn also die genauen Auswirkungen nicht.
マルコ is offline  
Old 09/01/2013, 09:40   #9
 
Masterakio1995's Avatar
 
elite*gold: 8
Join Date: Apr 2009
Posts: 2,977
Received Thanks: 855
Habe in einem anderen Forum die Lösung erhalten. Funktioniert indem ich eine Referenz angebe.
Masterakio1995 is offline  
Old 09/01/2013, 12:34   #10
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Du solltest ebenfalls die Lösung posten.
MrPuschel is offline  
Reply


Similar Threads Similar Threads
[AUFRUF] An alle, die von "[Aimee]", "Blck-Sellerx" & ".Ava" betrogen worden sind!
03/23/2010 - Last Chaos - 34 Replies
Hallo libe ehrlichen Member von e*PvPers! Im LastChaos und Metin Bereich im TBM Forum soll ".Ava" mehrere Leute abgezogen haben. Nun kommen aber plötzlich Gegenstimmen in der iTrader Bewertung die positiv ausfallen von "Black-SellerX" und "" bei genauerem Hinsehen bemerkt man, dass diese 3 Forenuser sich gegenseitig immer wieder positiv bewerten, dennnoch werden diese von vielen Usern negativ bewertet. Von "" wurde ich selber betrogen, daher mein Interesse. Deshalb vermute ich, dass hinter...



All times are GMT +2. The time now is 22:35.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.