Bonjour,
Je débute en js, et cherche a faire le script suivant :
j'ai un objet engine, qui a une methode run(), et je veux appeler périodiquement run d'une instance de engine via setInterval. Voila mon code
index.html
engine.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <html> <head> <title>Test</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript" src="./sources/prototype.js"></script> <script type="text/javascript" src="./sources/engine.js"></script> <script type="text/javascript"> function Start() { var engine = new MyEngine(); engine.configure(); engine.start(); } </script> </head> <body onload="Start();"> </body> </html>
donc quand je charge ma page, d'après le debugeur js de chrome, je commence bien par passer dans mon initialize qui init les deux propriétés, puis je passe ensuite dans mes run, mais des le premier run les valeur de m_lastTime et m_startTime ne sont plus initialisées. Je n'ai pas conséquent jamais l'alerte car mon total vaut NaN...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 var MyEngine = Class.create( { initialize: function() { this.m_lastTime = 0; this.m_startTime = new Date().getTime(); }, start: function() { setInterval(this.run, 15); }, configure: function() { // rien pour l'instant }, run: function() { var timeNow = new Date().getTime(); if (this.m_lastTime != 0) { var elapsed = timeNow - this.m_lastTime; var total = timeNow - this.m_startTime; if (total > 1000) { alert("more than 1000 elapsed !"); } } this.m_lastTime = timeNow; } });
Je ne comprend pas pourquoi ?
Partager