// Define the id of your board in BOARDID
const board = JXG.JSXGraph.initBoard(BOARDID, {
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',
[() => Math.cos(timeElapsed), () => 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;
playing();
}
};
function resetAnimation() {
if (requestId) {
window.cancelAnimationFrame(requestId);
}
timeElapsed = 0;
isPlaying = false;
board.update();
};
Copy to Clipboard
/*
This example is licensed under a
Creative Commons Attribution 4.0 International License.
https://creativecommons.org/licenses/by/4.0/
Please note that you have to mention
The Center of Mobile Learning with Digital Technology
in the credits.
*/
const BOARDID = 'your_div_id'; // Insert your id here!
const board = JXG.JSXGraph.initBoard(BOARDID, {
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',
[() => Math.cos(timeElapsed), () => 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;
playing();
}
};
function resetAnimation() {
if (requestId) {
window.cancelAnimationFrame(requestId);
}
timeElapsed = 0;
isPlaying = false;
board.update();
};
<button onclick="play()">play</button>
<button onclick="resetAnimation()">reset</button>
<div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; ">
<div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div>
</div>
<script type = "text/javascript">
/*
This example is licensed under a
Creative Commons Attribution 4.0 International License.
https://creativecommons.org/licenses/by/4.0/
Please note that you have to mention
The Center of Mobile Learning with Digital Technology
in the credits.
*/
const BOARDID = 'board-0';
const board = JXG.JSXGraph.initBoard(BOARDID, {
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',
[() => Math.cos(timeElapsed), () => 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;
playing();
}
};
function resetAnimation() {
if (requestId) {
window.cancelAnimationFrame(requestId);
}
timeElapsed = 0;
isPlaying = false;
board.update();
};
</script>
QR code for example "Animation with requestAnimationFrame"
Copy to Clipboard
/*
This example is licensed under a
Creative Commons Attribution 4.0 International License.
https://creativecommons.org/licenses/by/4.0/
Please note that you have to mention
The Center of Mobile Learning with Digital Technology
in the credits.
*/
const BOARDID = 'your_div_id'; // Insert your id here!
const board = JXG.JSXGraph.initBoard(BOARDID, {
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',
[() => Math.cos(timeElapsed), () => 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;
playing();
}
};
function resetAnimation() {
if (requestId) {
window.cancelAnimationFrame(requestId);
}
timeElapsed = 0;
isPlaying = false;
board.update();
};
<button onclick="play()">play</button>
<button onclick="resetAnimation()">reset</button>
<div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; ">
<div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div>
</div>
<script type = "text/javascript">
/*
This example is licensed under a
Creative Commons Attribution 4.0 International License.
https://creativecommons.org/licenses/by/4.0/
Please note that you have to mention
The Center of Mobile Learning with Digital Technology
in the credits.
*/
const BOARDID = 'board-0';
const board = JXG.JSXGraph.initBoard(BOARDID, {
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',
[() => Math.cos(timeElapsed), () => 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;
playing();
}
};
function resetAnimation() {
if (requestId) {
window.cancelAnimationFrame(requestId);
}
timeElapsed = 0;
isPlaying = false;
board.update();
};
</script>
QR code for example "Animation with requestAnimationFrame"