H5 Canvas 打飞机青春版

没事儿写写练习一下,说不准哪天就用到今天所用到的知识点了呢。

在线链接

https://linyisonger.github.io/H5.Examples/?name=./053.%E9%A3%9E%E6%9C%BA%E5%A4%A7%E6%88%98.html

功能清单

  • 循环滚动背景
  • 矩形碰撞
  • 随机生成敌人
  • 飞机左右移动
  • 苹果屏蔽长按
  • 移动端屏幕自适应

效果预览

在这里插入图片描述

代码

循环滚动背景

这里仅做了三张图片循环滚动,比较简略,如果出现较长屏幕尺寸会出现bug🐞。
当前滚动高度 % 图片高度 ± 图片高度

// 滚动背景
function scrollingBackgrounds() {gameBackgroundScrollingY += gameBackgroundScrollingSpeed;let gameBackgroundHeight = gameBackground.height;ctx.drawImage(gameBackground, 0, gameBackgroundScrollingY % gameBackgroundHeight - gameBackgroundHeight)ctx.drawImage(gameBackground, 0, gameBackgroundScrollingY % gameBackgroundHeight)ctx.drawImage(gameBackground, 0, gameBackgroundScrollingY % gameBackgroundHeight + gameBackgroundHeight)
}
矩形碰撞

仅仅做了矩形碰撞而且不带角度的矩形。

// 判断两矩形是否重叠
function isRectOverlap(rect1, rect2) {if (!rect1) return falseif (!rect2) return falseif (rect1.x + rect1.w < rect2.x) return falseif (rect1.y + rect1.h < rect2.y) return false;if (rect2.x + rect2.w < rect1.x) return falseif (rect2.y + rect2.h < rect1.y) return false;return true
}
苹果屏蔽长按
* {-webkit-touch-callout: none;
}body {height: 100vh;width: 100vw;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;
}
// 禁止长按浮窗
canvas.addEventListener("contextmenu", (e) => {e.preventDefault()
})
移动端屏幕自适应
// 引用之前写好的包中的js文件 图片展示长边
import { aspectFit } from "https://unpkg.com/@3r/tool/lib/picture.js";// 展示长边
let aspectFitRes = aspectFit(gameBackground.width, gameBackground.height, document.body.clientWidth, document.body.clientHeight)
config.width = aspectFitRes.width;
config.height = Math.max(aspectFitRes.height, document.body.clientHeight) 
canvas.setAttribute('width', config.width);
canvas.setAttribute('height', config.height);

剩下的功能点比较依赖上下文内容

源码地址

https://github.com/linyisonger/H5.Examples

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238099.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在CentOS系统下的Tomcat8.5或9安装SSL证书

您可以在CentOS系统下的Tomcat服务器安装SSL证书&#xff0c;实现通过HTTPS安全访问Web服务。本文介绍如何CentOS系统下Tomcat 8.5或9安装SSL证书。 环境准备 操作系统&#xff1a;CentOS 7.6 64位 Web服务器&#xff1a;Tomcat 8.5或9 说明 Tomcat服务器需要提前安装JDK环…

SpringSecurity 用户帐号已被锁定

SpringSecurity 用户帐号已被锁定 01 异常发生场景 当我自定义登录接口时以下是我的UserDetailsService和UserDetails接口的实现类 Service public class UserDetailsServiceImpl implements UserDetailsService {Autowiredprivate MsUserServiceImp msUserServiceImp;Overr…

SeaTunnel扩展Source插件,自定义connector-webservice

代码结构 在seatunnel-connectors-v2中新建connector-webservice模块&#xff0c;可以直接赋值connector-http-base模块&#xff0c;webservice和http的方式比较类似&#xff0c;有些类直接复制了http中的代码。 核心类有WebserviceConfig&#xff0c;WebserviceParameter&am…

WPF Mvvm模式下面如何将事件映射到ViewModel层

前言 平常用惯了Command绑定,都快忘记传统的基于事件编程模式了,但是Commond模式里面有个明显的问题,就是你无法获取到事件源的参数。很多大聪明肯定会说,这还不简单,通过自己写控件,给控件加个自定义属性不就行了,想要啥事件就写啥事件进去,完全自主可控。但是对于写…

列表插槽使用

{label: 是否展示,prop: isShow,solt: true, }<!--自定义列--><template slot-scope"scope" slot"isShow"><div style"color: red;cursor: pointer" focus"getIsShow(scope.row)" ><el-switch v-model"sco…

良品铺子“降价不降质”:利他主义,零食新成长逻辑

最近&#xff0c;男大学生组团穿军大衣&#xff0c;女大学生集体穿花棉袄&#xff0c;火遍全网。 相当一批大学生发现&#xff0c;军大衣、花棉袄在保暖上不输羽绒服&#xff0c;而且价格还便宜。这股风潮背后&#xff0c;其实映射出当下年轻人在消费上变得愈发&#xff1a; …

C# 动态编译代码并执行

写在前面 本文采用动态编译的方式&#xff0c;对目标文件code.txt中的C#代码进行实时编译并调用&#xff1b;当然也可以直接在代码中直接装配或读取已有的代码文本&#xff0c;动态编译可以用于很多需要热更新的场景&#xff0c;实现无需重启程序也能达到更新代码的需求。 代…

算法题--排椅子(贪心)

题目链接 code #include<bits/stdc.h> using namespace std;struct node{int indx;//用来存储数组下标int cnt;//用来计数 };bool cmp(node a,node b){ //判断是否是数字最大的一个就是经过最多谈话人的道return a.cnt>b.cnt; } node row[2010],cow[2010];bool cmp…

MatrixOne Meetup回顾 | 深圳站

11月11日&#xff0c;MatrixOne 社区在深圳成功举办了第二次 MatrixOne Meetup。活动当天&#xff0c;数十位外部小伙伴到场参与&#xff0c;一同分享云原生数据库相关知识内容。此次活动&#xff0c;我们也邀请了来自深圳素问智能的外部讲师&#xff0c;分享了目前火爆的大模型…

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…

为何要隐藏IP地址?网络上哪些行为需要隐藏IP和更换IP?

网络已经成为现代人生活的重要组成部分&#xff0c;人们在网络上交流、学习、娱乐、购物等。但是&#xff0c;在享受网络带来的便利时&#xff0c;我们也需要时刻保护自己的隐私和安全。其中&#xff0c;IP地址作为网络通信中的重要标识&#xff0c;如何隐藏以及在哪些情况下需…

数据中台具体是怎么解决数据孤岛的?_光点科技

在数字化时代&#xff0c;数据已成为企业的核心资产。然而&#xff0c;由于历史遗留问题、部门壁垒等因素&#xff0c;很多企业面临着“数据孤岛”的问题。数据孤岛是指在一个组织内&#xff0c;数据被分散在不同的系统中&#xff0c;彼此隔离&#xff0c;不能有效整合和利用。…