demo地址http://06wjin.sinaapp.com/html5/hitTest/ 用鼠标拖动
1首先先判断两个图片的矩形区域有无碰撞
判断两个矩形的中心距离即可
2如果矩形区域有碰撞则检测上图红色矩形区域的像素,这里有两种方法
a 直接判断,循环检测两位图在红色矩形内是否有一点像素的alpha点都不为0,如果有则说明碰撞
- context.drawImage(img1, x1, y1);//画第一张位图
- var data1 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取第一张位图红色矩形内像素
- context.clearRect(x1, y1,img1.width,img1.height);//清除第一张位图
- context.drawImage(img2, x2, y2);//画第二张位图
- var data2 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取第二章位图红色矩形内像素
- for(var i = 3; i
- {
- if(data1 > 0 && data2 > 0) return true;//循环判断alpha值,这里可以设置透明阙值,比如把0改为0.2,意味着透明度为0.2时就认为不碰撞了
- }
- return false;
b将绘图模式改为xor(xor是指相交部分透明,具体见站长上篇教程),也可以判断
- context.drawImage(img1, x1,y1);//画第一张位图
- context.globalCompositeOperation = 'xor';//改绘图模式为xor
- context.drawImage(img2, x2,y2);//画第二张位图
- var data = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;//获取位图红色矩形内像素
- context.globalCompositeOperation = 'source-over';//把绘图模式改回去
- for(var i = 3; i
- {
- if(data == 0 ) return true;//若有透明像素,则碰撞
- }
- return false;
下面是一个2d精灵类,碰撞直接用sprite1.hitTest(sprite2)就好
- function Sprite(x, y, img, width, height)
- {
- this.x = x;
- this.y = y;
- this.img = document.getElementById(img);
- this.width = width;
- this.height = height;
- this.halfWidth = this.width/2;
- this.halfHeight = this.height/2;
- this.angle = 0;角度
- this.scaleX = 1;//水平缩放
- this.scaleY = 1;//竖直缩放
- this.alpha = 1;//透明度
- this.isDrug = false;//是否拖到
- }
- Sprite.prototype.draw = function()
- {
- context.save();
- context.translate(this.x + this.halfWidth, this.y + this.halfHeight);
- context.globalAlpha = this.alpha;//修改透明度
- context.rotate(this.angle);//旋转角度
- context.scale(this.scaleX, this.scaleY);//缩放
- context.drawImage(this.img, -this.halfWidth, -this.halfHeight);
- context.restore();
- }
- Sprite.prototype.hitTest = function(sprite)
- {
- var minx = this.x > sprite.x ? this.x :sprite.x;
- var maxx = this.x + this.width
- var miny = this.y > sprite.y ? this.y : sprite.y;
- var maxy = this.y + this.width
- if (minx >= maxx || miny >= maxy) {return false;}
- var canvas = document.createElement('canvas');
- canvas.setAttribute('width', 550);
- canvas.setAttribute('height', 400);
- var context = canvas.getContext('2d');
- /*第一种方法*/
- context.drawImage(this.img, this.x, this.y);
- var data1 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- context.clearRect(0, 0, 550, 400);
- context.drawImage(sprite.img, sprite.x, sprite.y);
- var data2 = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- for(var i = 3; i
- {
- if(data1 > 0 && data2 > 0) return true;
- }
- return false;
- /*第二种方法
- context.drawImage(this.img, this.x, this.y);
- context.globalCompositeOperation = 'xor';
- context.drawImage(sprite.img, sprite.x, sprite.y);
- var data = context.getImageData(minx, miny, maxx - minx, maxy - miny).data;
- context.globalCompositeOperation = 'source-over';
- for(var i = 3; i
- {
- if(data == 0 ) return true;
- }
- return false;*/
- }

HTML5是构建现代网页的关键技术,提供了许多新元素和功能。1.HTML5引入了语义化元素如、、等,增强了网页结构和SEO。2.支持多媒体元素和,无需插件即可嵌入媒体。3.表单增强了新输入类型和验证属性,简化了验证过程。4.提供了离线和本地存储功能,提升了网页性能和用户体验。

H5代码的最佳实践包括:1.使用正确的DOCTYPE声明和字符编码;2.采用语义化标签;3.减少HTTP请求;4.使用异步加载;5.优化图像。这些实践能提升网页的效率、可维护性和用户体验。

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显着的发展。 1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。 2)CSS3增加了动画和过渡功能,使页面效果更加丰富。 3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5不仅仅是HTML5的简称,它代表了一个更广泛的现代网页开发技术生态:1.H5包括HTML5、CSS3、JavaScript及相关API和技术;2.它提供更丰富、互动、流畅的用户体验,能在多设备上无缝运行;3.使用H5技术栈可以创建响应式网页和复杂交互功能。

H5与HTML5指的是同一个东西,即HTML5。HTML5是HTML的第五个版本,带来了语义化标签、多媒体支持、画布与图形、离线存储与本地存储等新功能,提升了网页的表现力和交互性。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5开发需要掌握的工具和框架包括Vue.js、React和Webpack。1.Vue.js适用于构建用户界面,支持组件化开发。2.React通过虚拟DOM优化页面渲染,适合复杂应用。3.Webpack用于模块打包,优化资源加载。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1
好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具