第16/90步《前端篇》第3章 编写一个简单的HTML5小游戏:完成交互功能 第7课

简介: 今天学习《前端篇》第3章 编写一个简单的HTML5小游戏:完成交互功能 第7课 实现动画:让小球动起来,这节课将实现动画,让小球动起来。

image.png

今天学习《前端篇》第3章 编写一个简单的HTML5小游戏:完成交互功能 第7课 实现动画:让小球动起来,这节课将实现动画,让小球动起来。


学习目标


  • 学习使用定时器实现动画;
  • 学习JavaScript的异步执行机制;
  • 了解JS的13种复合赋值运算符;
  • 学习清屏;
  • 学习实现简单的碰撞检测;
  • 复习使用if else if 语句;
  • 学习使用requestAnimationFrame函数实现动画;

主要知识点/技能点


  • 在 JS 语言中,有两个定时器方法可以让小球动起来,一个是 setInterval,另一个是 setTimeout,前者用于实现每隔一段时间就执行某一段代码,后者用于实现延时执行某一段代码。

  • setInterval 以指定毫秒数为间隔,不停地执行回调函数;setTimeout 在暂停指定毫秒数后,执行回调函数,且仅执行一次。

  • JS 是单线程,同一时间只能执行一个任务,同步任务在主线程中会依次执行。在主线程上发起的异步操作,会交给另外一个看不见的异步线程执行和管理,不会阻塞主线程的执行。

  • 当主线程空闲的时候(例如每个帧渲染周期的空隙),它会去异步线程那里询问,有没有可被执行的异步代码。如果某个异步操作(例如 Ajax 网络请求的回调函数,或者某个定时器的回调函数)可以执行了,便会被放到主线程队列中排队执行。

  • 定时器是一种异步任务。在浏览器宿主环境中有一个独立的定时器模块,定时器的延迟时间是由定时器模块管理的,如果某个定时器时间到了,它的回调函数就会被加入主线程队列中。

  • JS 有 13 种复合赋值运算符,复合赋值运算符等于先运算,再以运算结果赋值。

  • 在 Canvas API中,clearRect 方法可以清空画布上给定矩形区域内的像素。

  • 如果分支足够多,可以有许多个 else if 存在。一般将出现概率最高的条件分支放在最上面,这样可以减少条件检查的次数。

实践疑难点


  • 在实际动画时,不但变化的小球需要重绘,其它静止对象也需要重绘。

  • 挡板不见了,原因在于我们以500毫秒的间隔执行render函数,这个时间太短,不足以让img的onload回调函数(第4行)在每帧都得到执行。

  • 我们可以将画布四周看作墙壁,当小球触达四周边线时,让其反弹。反弹涉及的变化,是速度方向的变化。当球触及顶边或底边时,x 轴方向速度不变,y轴方向速度取反;当触及左右边界时依此类推,均是在边线垂直的方向改变运动方向。

  • 每次小球在碰到边界时,有半个球几乎都会陷入墙壁中。这是由于碰撞检测的坐标是以小球的圆心为准的,如果以圆弧边界进行检测,或者将画布的四周边界值都减少一个小球半径的宽度,问题应该就会解决。

小结


这节课主要使用擦除重绘的方法让小球动了起来,并让小球与四壁之间实现了简单的碰撞检测,在实践过程中我们学习了JS的定时器、异步执行机制、复合赋值运算符、if else逻辑控制语句及优化动画性能的requestAnimationFrame全局函数。


目录
相关文章
|
10天前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
107 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
15天前
|
监控 前端开发 Java
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
38 9
|
1月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
43 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
2月前
|
移动开发 前端开发 搜索推荐
《前端技术基础》第01章 HTML基础【合集】
超文本标记语言(HyperText Markup Language,简称 HTML)是构建网页结构的基础标记语言。它与 CSS、JavaScript 协同,负责搭建网页“骨架”,用标签组织内容,像标题、段落、图片等元素,通过起始与结束标签(部分可单用,如`<img>`)界定层级与布局,将信息有序整合。标签含特定语义,向浏览器传达展示方式,为网页准确呈现及后续美化、交互筑牢根基。
96 25
|
3月前
|
人工智能 前端开发 JavaScript
前端基础之HTML
Web1.0、Web2.0 和 Web3.0 标志着互联网发展的三个阶段。Web1.0(静态互联网,1990年代初至2000年代初)以静态内容和单向信息流为主,用户仅能浏览。Web2.0(互动互联网,2000年代初至2010年代初)引入了用户生成内容和社交网络,内容动态且互动性强。Web3.0(语义互联网,2010年代至今)强调语义化、个性化、智能化及去中心化,结合AI、区块链等技术,提供沉浸式体验。HTTP和HTML作为互联网基础协议和技术,在各阶段不断演进,共同推动了现代互联网的发展。
前端基础之HTML
|
4月前
|
移动开发 编解码 前端开发
摸鱼必备-80款在线HTML小游戏
本文推荐了80款精彩的HTML5在线小游戏,涵盖益智、冒险、射击、体育等多种类型,适合各年龄段玩家。无需下载安装,随时随地畅玩。地址:[https://game.share888.top/](https://game.share888.top/)
1065 7
摸鱼必备-80款在线HTML小游戏
|
4月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
74 6
|
4月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
108 5
|
4月前
html页面点击按钮实现页面跳转功能
html页面点击按钮实现页面跳转
129 11
|
4月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
88 4

热门文章

最新文章