User:Cleonis/sandbox/requestAnimationFrame: Difference between revisions
From JSXGraph Wiki
 Created page with "<jsxgraph width="500" height="500">  var board = JXG.JSXGraph.initBoard(   'jxgbox',   {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true} );  var isPlaying = fals..."  | 
				No edit summary  | 
				||
| Line 20: | Line 20: | ||
   board.update();  |    board.update();  | ||
   requestId = window.requestAnimationFrame(playing);  |    requestId = window.requestAnimationFrame(playing);  | ||
}  | };  | ||
function play() {  | function play() {  | ||
| Line 28: | Line 28: | ||
     window.requestAnimationFrame(playing);  |      window.requestAnimationFrame(playing);  | ||
   }  |    }  | ||
}  | };  | ||
function resetAnimation() {  | function resetAnimation() {  | ||
| Line 37: | Line 37: | ||
   isPlaying = false;  |    isPlaying = false;  | ||
   board.update();  |    board.update();  | ||
}  | };  | ||
</jsxgraph>  | </jsxgraph>  | ||
| Line 45: | Line 45: | ||
  <button id="playbutton" onclick="play()">play</button>  <button id="resetanimation" onclick="resetAnimation()">reset</button>  |   <button id="playbutton" onclick="play()">play</button>  <button id="resetanimation" onclick="resetAnimation()">reset</button>  | ||
</html>  | </html>  | ||
===The JavaScript code===  | ===The JavaScript code===  | ||
| Line 68: | Line 69: | ||
   board.update();  |    board.update();  | ||
   requestId = window.requestAnimationFrame(playing);  |    requestId = window.requestAnimationFrame(playing);  | ||
}  | };  | ||
function play() {  | function play() {  | ||
| Line 76: | Line 77: | ||
     window.requestAnimationFrame(playing);  |      window.requestAnimationFrame(playing);  | ||
   }  |    }  | ||
}  | };  | ||
function resetAnimation() {  | function resetAnimation() {  | ||
| Line 85: | Line 86: | ||
   isPlaying = false;  |    isPlaying = false;  | ||
   board.update();  |    board.update();  | ||
}  | };  | ||
</source>  | </source>  | ||
| Line 92: | Line 93: | ||
  <button id="playbutton" onclick="play()">play</button>  <button id="resetanimation" onclick="resetAnimation()">reset</button>  |   <button id="playbutton" onclick="play()">play</button>  <button id="resetanimation" onclick="resetAnimation()">reset</button>  | ||
</source>  | </source>  | ||
Note that the command 'requestAnimationFrame' must be given twice; it's present both in the function 'play()' and in the function 'playing()'.<br>   | |||
<br>  | |||
The function Date.now() returns a timestamp in miliseconds. To make the variable timeElapsed count time in seconds the number (Date.now() - starttime) is divided by 1000.<br>  | |||
<br>  | |||
The function Date.now() is a relative new addition to Javascript. In the case of Internet Explorer: support of Date.now() was introduced in IE9.  | |||
[[Category:Examples]]  | [[Category:Examples]]  | ||
Latest revision as of 21:00, 26 August 2014
    
The JavaScript code
var board = JXG.JSXGraph.initBoard(
  'jxgbox',
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}
);
var isPlaying = false;
var starttime = 0;
var timeElapsed = 0;
var requestId = 0;
var p = board.create(
  'point',
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]
);
function playing() {
  timeElapsed = (Date.now() - starttime)/1000;
  board.update();
  requestId = window.requestAnimationFrame(playing);
};
function play() {
  if (!isPlaying) {
    starttime = Date.now();
    isPlaying = true;
    window.requestAnimationFrame(playing);
  }
};
function resetAnimation() {
  if (requestId) {
    window.cancelAnimationFrame(requestId);
  }
  timeElapsed = 0;
  isPlaying = false;
  board.update();
};
The HTML
  <button id="playbutton" onclick="play()">play</button>  <button id="resetanimation" onclick="resetAnimation()">reset</button>
Note that the command 'requestAnimationFrame' must be given twice; it's present both in the function 'play()' and in the function 'playing()'.
 
The function Date.now() returns a timestamp in miliseconds. To make the variable timeElapsed count time in seconds the number (Date.now() - starttime) is divided by 1000.
The function Date.now() is a relative new addition to Javascript. In the case of Internet Explorer: support of Date.now() was introduced in IE9.