HTML5游戏_基于DOM平台跳跃小游戏开发_6.动画帧

HTML5游戏_基于DOM平台跳跃小游戏开发

动画帧

  • 视频讲解

HTML5基于DOM平台跳跃小游戏开发

  • 效果图
    在这里插入图片描述

  • 本章的知识点:

  • window.requestAnimationFrame() 告诉浏览器你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行

    1. requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧。
    2. 在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的的cpu,gpu和内存使用量。
  • requestAnimationFrame(回调函数) 简单说就是在浏览器每次刷新时请求动画帧进行调用回调函数,即浏览器每帧调用指定的回调函数更新动画.同时每个游戏场景基本只定义一个requestAnimationFrame.

  • Math.min(数字a, 数字b) 返回参数中最小的值.



  • 我们来定义动画帧显示的函数
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>html跳跃小游戏</title>
	</head>
	<body>
		<!--在body添加一个显示浏览器fps的标签-->
		<h3 id="fps"></h3>
		<!--JS脚本-->
		<script>
			//运行帧动画函数 传递 执行每帧动作方法
			运行帧动画(function(每帧执行时间) 
			{
				/*这个方法是游戏里每帧运行的所有内容,包括动画/判断碰撞/按键监听等*/
				//计算每秒帧数并保留两位小数
				document.getElementById("fps").innerHTML = "FPS=" + (1 / 每帧执行时间).toFixed(2);
				//执行每帧动作方法 返回false时结束运行帧动画, 返回其他则继续执行动画
				return true;
			});
			/**
			 *@描述:	运行帧动画 函数
			 *@传参:	执行每帧动作方法(执行每帧动作的方法,返回布尔值变量)
			 *@参数:
			 *@返回值:	无
			 *@创建人:	王天宇
			 *@创建时间:2021/02/24
			 *@修改人和其它信息:
			**/
			function 运行帧动画(执行每帧动作方法) 
			{
				//声明变量 上一帧时间 记录上一帧执行时的时间
				let 上一帧时间 = null;
				//动画帧 requestAnimationFrame调用方法 会传递 当前帧时间 参数单位时毫秒
				function 动画帧(当前帧时间) 
				{
					//声明变量 停止动画
					let 停止动画 = false;
					//判断 上一帧时间=null 说明当前时第一帧 
					if (上一帧时间 != null) 
					{
						//声明变量 每帧执行时间 保存计算得到的每帧执行时间单位秒
						const 每帧执行时间 = Math.min(当前帧时间 - 上一帧时间, 100) / 1000;
						//执行每帧动作方法
						停止动画 = 执行每帧动作方法(每帧执行时间) === false;
					}
					//将上一帧时间=当前帧时间;
					上一帧时间 = 当前帧时间;
					//判断是否停止动画
					if (!停止动画)
					{
						//继续调用动画帧
						requestAnimationFrame(动画帧);
					}
				}
				//window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.
				requestAnimationFrame(动画帧);
			}
		</script>
	</body>
</html>

运行效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玎科技首席执行官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值