转自:http://www.108js.com/article/article3/30046.html?id=255
下面是用HTML5的<canvas>标签写的一个视差滚动动画的示例。采用了制作动画或者游戏编程中常用的双缓冲技术:获取到页面中的Canvas对象之后,创建了一个与页面Canvas同样大小的Canvas对象。绘图时先将图像绘制到缓冲Canvas中,等到每一桢的图像绘制完全后在把整个缓冲Canvas绘制到页面Canvas中。前景、中景、远景的视差通过控制移动速度来实现。整个动画的绘制部分只使用了Context对象的drawImage()方法。
<html>
<body>
<canvas id="canvas" width="600" height="400">
<p>Your browser does not support the canvas element</p>
</canvas>
</body>
<script>
const FPS = 30; const SECONDS_BETWEEN_FRAMES = 1 / FPS; var bg0 = new Image(); var bg1 = new Image(); var bg2 = new Image(); var x = 0; const RATE = 50 * SECONDS_BETWEEN_FRAMES; const WIDTH = 600; const HEIGHT = 320; var canvas; var canvasBuffer; var context; var contextBuffer; window.onload = init; function init() { bg0.src = "b0.png"; bg1.src = "b1.png"; bg2.src = "b2.png"; canvas = document.getElementById("canvas"); canvasBuffer = document.createElement("canvas"); canvasBuffer.width = canvas.width; canvasBuffer.height = canvas.height; context = canvas.getContext("2d"); contextBuffer = canvasBuffer.getContext("2d"); context.clearRect(0, 0, canvas.width, canvas.height) contextBuffer.clearRect(0, 0, canvasBuffer.width, canvasBuffer.height); setInterval(animation, SECONDS_BETWEEN_FRAMES); } function animation() { x += RATE; context.clearRect(0, 0, canvas.width, canvas.height) contextBuffer.clearRect(0, 0, canvasBuffer.width, canvasBuffer.height); drawBuffer(bg0, 0, 0, 0.5); drawBuffer(bg1, 0, 100, 0.75); drawBuffer(bg2, 0, 100, 1); context.drawImage(canvasBuffer, 0, 0); } function drawBuffer(image, dx, dy, factor) { var left = (x * factor) % image.width; if (left + WIDTH >= image.width) { var d0 = image.width - left; var d1 = WIDTH - d0; contextBuffer.drawImage(image, left, 0, d0, HEIGHT, dx, dy, d0, HEIGHT); contextBuffer.drawImage(image, 0, 0, d1, HEIGHT, dx + d0, dy, d1, HEIGHT); } else { contextBuffer.drawImage(image, left, 0, WIDTH, HEIGHT, dx, dy, WIDTH, HEIGHT); } }
</script>
</html>
顺带一提的是在Canvas画布中绘制图形,一般情况下后绘制的会覆盖先绘制的,所以在绘制图像的时候需要先绘制远景b0,再绘制中景b1,最后绘制近景b2。
相关推荐
HTML5的Canvas小游戏实例,尤其是基于拼图游戏的开发,是Web前端开发中一个有趣的实践项目,它结合了HTML5、Canvas、JavaScript以及CSS等多种技术。在这个游戏中,玩家需要通过移动图片碎片来完成完整的图像,这既...
通过本书的实例代码,开发者不仅可以学习到HTML5 Canvas的基本操作,还能掌握游戏开发的流程和技巧,从零开始构建自己的游戏项目。实践过程中,对前端性能优化、用户体验设计和跨平台兼容性的理解也会得到提升。因此...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上直接绘制图形,从而创建出丰富的交互式用户体验。EaselJS是基于HTML5 Canvas的一个JavaScript库,它为Canvas提供了一个更加高级、易于使用的API,使得...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建丰富的交互式游戏和应用程序提供了可能。在这个“HTML5 Canvas游戏开发实战”中,我们将会深入探讨如何利用Canvas API来构建...
HTML5 Canvas 2D竖版飞行射击游戏实例是利用HTML5的新特性——Canvas元素和JavaScript进行游戏开发的一个经典案例。Canvas作为一个强大的图形绘制接口,允许开发者通过编程方式动态地在网页上绘制图形,从而实现丰富...
《HTML5 Canvas Cookbook》这本书通过实例讲解,不仅适合初学者快速入门,也为有经验的开发者提供了许多实用的解决方案和灵感,是一本值得深入研究的HTML5 Canvas参考资料。通过阅读和实践书中的示例,读者将能够...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建丰富的交互式游戏和应用程序提供了可能。在这个“HTML 5 CANVAS游戏开发实战_高清完整版”中,我们将深入探讨如何利用Canvas ...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的视觉体验。在这个“html5 canvas几何模型3D运动动画效果”项目中,我们将探讨如何利用HTML5 Canvas API构建一个...
在本实例中,我们将探讨如何利用这些技术实现一个"jqueryhtml5 canvas翻滚熔岩动画背景特效"。 首先,jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理和AJAX交互等任务。在创建动态背景特效时,jQuery...
在HTML5 Canvas开发详解(第2版)这本书中,这些知识点将通过实例和实践案例进行深入讲解,旨在帮助开发者从基础到进阶,全面掌握Canvas的使用,为创建引人入胜的Web图形和交互体验打下坚实基础。
"HTML 5 CANVAS游戏开发实战"这本书深入探讨了如何利用Canvas API来构建游戏,通过实例帮助读者掌握这一技术。 1. Canvas API基础: HTML5 Canvas的核心是一个二维绘图上下文,通过JavaScript调用其提供的方法进行...
HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式用户体验。《HTML5_Canvas开发详解(第2版)》这本书深入探讨了Canvas API的各个方面,旨在帮助读者掌握这个技术...
这个实例“好搜 html canvas动态背景css3”展示了如何结合使用这些技术来创建一个动态的网页背景效果。 HTML(HyperText Markup Language)是网页内容的基础结构语言,用于定义网页的各个元素,如标题、段落、图片...
HTML5 Canvas是现代Web开发中的一个关键特性,它允许开发者在网页上绘制2D图形,创建复杂的动画效果以及构建互动式游戏。这本书《HTML5 Canvas核心技术图形动画与游戏开发》全面探讨了Canvas API的各个方面,旨在...
通过这个实例,你可以深入理解HTML5 Canvas的绘图机制,以及如何使用JavaScript实现动态效果,这对于提升网页交互性和用户体验非常有帮助。在实际项目中,你可以根据需求调整参数,创造出更多富有创意的动画效果。
HTML5提供了一些新的布局元素,如`<figure>`和`<figcaption>`用于图像和图例,`<canvas>`用于绘制图形,`<video>`和`<audio>`用于多媒体播放。同时,CSS3的Flexbox和Grid布局系统让网页布局更加灵活。 1. Flexbox:...
本代码清单涵盖了HTML5开发的关键要点和实例,是学习和实践HTML5编程的宝贵资源。 一、HTML5的新特性 1. 结构化元素:`<article>`, `<aside>`, `<footer>`, `<header>`, `<nav>`, `<section>`等,这些元素有助于...
在本文中,我们将深入探讨HTML5的Canvas元素及其在创建动态和交互式图形中的应用。Canvas是一个基于矢量图形的二维绘图API,允许开发者在网页上直接进行图像处理和动画制作。"CANVAS实例.rar"这个压缩包包含了11个...
这个“基于HTML5 Canvas实现的图表插件Chart.js实例.zip”包含了一些关于如何使用Chart.js的示例和指南。 Chart.js的优点在于它的简洁性和易用性。开发者只需要定义数据和配置选项,Chart.js就能自动绘制出美观且...
HTML5 canvas是现代网页开发中的一个关键特性,它允许开发者在网页上绘制矢量图形、动画,以及创建交互式内容。...这不仅提升了开发者的技术能力,也为我们提供了在实际项目中应用HTML5 canvas的一个实例。