您现在的位置是:网站首页> 编程资料编程资料
用HTML5制作视频拼图的教程HTML5拖拽API经典实例详解HTML5 拖拽批量上传文件的示例代码html5 canvas绘制可拖拽的3D立体文字效果源码html5 canvas绘制的可拖拽全屏3D地球旋转动画特效源码HTML5+Three.js WebGL实现的月球发光着色与拖拽动画效果源码HTML5拖拽的简单实例html5实现的网格图片鼠标拖动拼图游戏源码html5版canvas自由拼图实例HTML5拖拽功能实现的拼图游戏
2023-10-14
595人已围观
简介 这篇文章主要介绍了用HTML5制作视频拼图的教程,主要用到了HTML5的Canvas API,需要的朋友可以参考下
几天前同事给我看了一个特效,是一个拼图游戏,不同的是,拼图里的是动画。他让我看下做个DEMO,于是就自己整了一会,也确实不难。用canvas很容易做。所以这篇博文不适合高手看。。。。就是随便写来玩玩的。
效果图:
至少我刚看到这个的时候觉得挺新颖的,所以才会想到做出来玩玩,觉得楼主out的哥们请轻喷
不多说,先上DEMO:视频拼图 (或许要等一会才能看到效果,我是直接在w3school那里搞了个视频链接过来的,拖动什么的都做的很简单,或许还有些bug,毕竟就只是做一个DEMO玩玩而已,说说原理就行了),还有一点,直接把视频的当前帧画到canvas中在移动设备上好像还不支持。。。至少我用ipad看了一下,发现画不上去,如果有知道肿么解决这问题的大牛请为小弟解答一下,不甚感激
原理:每一块拼图就是一个canvas,同时还需要一个离屏canvas。先整一个video标签
并且把video隐藏掉,然后播放视频的时候把每一帧都画到离屏canvas中(离屏canvas就是隐藏了的canvas,用于保存数据),写法很简单:
,直接用drawImage方法画上去就行了。为何要先用离屏canvas呢,因为如果直接把每一帧数据同时画到所有拼图块的canvas中,浏览器会瞬间崩掉。所以用一个离屏canvas作为缓冲。先把当前帧的数据保存到canvas,然后再将canvas画到作为拼图块的canvas中。将canvas画到canvas中也很简单,也是用drawImage就可以搞定:
ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);
然后。。。。原理就这么简单,之后提醒一点,用requestAnimationFrame循环取帧时,要限一下速,例如下面所写的,我是每30毫秒取一次,推荐30~50毫秒,太低浏览器容易崩溃,太高的话视频出现卡帧现象了:
function animate(){
var newTime = new Date();
if(newTime - lastTime > 30){
lastTime = newTime;
ctx.drawImage(video , 0 , 0 , vw , vh);
canvases.forEach(function(){
var ctx2 = this.cas.getContext('2d');
ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);
});
}
if("requestAnimationFrame" in window){
requestAnimationFrame(animate);
}
else if("webkitRequestAnimationFrame" in window){
webkitRequestAnimationFrame(animate);
}
else if("msRequestAnimationFrame" in window){
msRequestAnimationFrame(animate);
}
else if("mozRequestAnimationFrame" in window){
mozRequestAnimationFrame(animate);
}
}
最后贴出所有代码:
相关内容
- HTML5有哪些新特征HTML5新特性之type=file文件上传功能HTML5新特性之语义化标签HTML5新特性之用SVG绘制微信logo 整理HTML5的一些新特性与Canvas的常用属性基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作HTML5 history新特性pushState、replaceState及两者的区别 Html5新特性用canvas标签画多条直线附效果截图html5声频audio和视频video等新特性详细说明html5新特性与用法大全
- 浅析移动设备HTML5页面布局 Flex移动布局中单行和双行布局的区别及使用详解
- 深入浅析HTML5中的SVG基于html5实现的svg图标手机菜单动态特效源码html5基于svg实现圆形进度统计动画特效源码基于HTML5 SVG制作汉堡包菜单按钮分段动画效果深入解析HTML5使用SVG图像时的viewBox属性用法html5+svg学习指南之SVG基础知识HTML5+SVG实现的线性图表特效源码 可绘制图表区域颜色HTML5 SVG实现的Loading动画加载特效源码
- 基于HTML5代码实现折叠菜单附源码下载html5写一个BUI折叠菜单插件的实现方法
- HTML5标签使用方法详解关于HTML5语义标签的实践(blog页面)html5基于canvas实现的文字标签云3D旋转动画特效源码HTML5之语义标签介绍移动端html5 meta标签的神奇功效实例讲解HTML5的meta标签的一些应用 HTML与XHTML、以及HTML4与HTML5标签之间的区别简介HTML5安全攻防之新标签攻击详解简单介绍HTML5中audio标签的使用HTML5进阶段内联标签汇总(小篇)
- 推荐WEB开发者最佳HTML5和CSS3代码生成器移动端Web页面的CSS3 flex布局快速上手指南详解CSS制作Web页面条纹背景样式的技巧像素密度与CSS3的viewport在移动端Web响应式布局中的运用CSS实现带倒三角标记的WEB标准菜单效果代码CSS Web安全字体组合详解
- 骷髅王子救公主 第1-10关 图文攻略_手机游戏_游戏攻略_
- 骷髅王子救公主 第2-1关 图文攻略_手机游戏_游戏攻略_
- 骷髅王子救公主 第2-2关 图文攻略_手机游戏_游戏攻略_
- 骷髅王子救公主 第2-3关 图文攻略_手机游戏_游戏攻略_
