发布于2023-05-29 21:20 阅读(576) 评论(0) 点赞(19) 收藏(3)
目前正在开发画布游戏。我的暂停功能有效,但我的简历无效。我在这里看到了其他类似问题的例子,但它没有帮助。我究竟做错了什么?
var paused = false;
document.onkeydown = function onKeyPause(event) {
if (event.keyCode === 80)
paused = !paused;
return;}
var gamearea = {
canvas: document.createElement("canvas"),
start: function () {
this.canvas.width = 250;
this.canvas.height = 287;
...more canvas css.........
update: function () {
gamearea.context.clearRect(0, 0, 300, 400);
document.getElementById("score").innerText = "Score: " + score;
if (score == 20) {
gamearea.stop(true);
return;
}
if (targetGone()) {
gamearea.stop(false);
return;
}
if (paused) {
gamearea.pausedGame(true);
return;
}
pausedGame: function (paused) {
gamearea.canvas.removeEventListener("click", clickHandler, event);
gamearea.context.fillRect(0, 100, 300, 100);
gamearea.context.font = "20px helvetica";
... more canvas css ..
if (paused) return; // <--- stop looping
update();
draw();
window.requestAnimationFrame(loop, canvas);
},
requestAnimationFrame 返回一个 Id,您可以使用它来“暂停”您的游戏循环
使用 cancelAnimationFrame(RETURNED_ID)
简单的例子
// global variable
let loopId = null;
function start() {
...
loopId = requestAnimationFrame(loop);
}
function loop() {
...
loopId = requestAnimationFrame(loop);
}
function pauseHandler() {
if (looId) {
cancelAnimationFrame(loopId)
}
}
作者:黑洞官方问答小能手
链接:http://www.qianduanheidong.com/blog/article/528445/894c215ad81c78a8f623/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!