如何制作html5的动画效果?

如题所述

主要思想:
首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间间隔绘制不同的帧,这样看起来就像动画在播放。
关键技术点:
JavaScript 函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScript方法,
另外一个参数代表间隔时间,单位为毫秒数。代码示例:
setTimeout( update, 1000/30);
Canvas的API-drawImage()方法,需要指定全部9个参数:
ctx.drawImage(myImage, offw, offh, width,height, x2, y2, width, height);
其中offw, offh是指源图像的起始坐标点,width, height表示源图像的宽与高,x2,y2表
示源图像在目标Canvas上的起始坐标点。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Mouse Event Demo</title>
<link href="default.css" rel="stylesheet" />
<script>
var ctx = null; // global variable 2d context
var started = false;
var mText_canvas = null;
var x = 0, y =0;
var frame = 0; // 22 5*5 + 2
var imageReady = false;
var myImage = null;
var px = 300;
var py = 300;
var x2 = 300;
var y2 = 0;
window.onload = function() {
var canvas = document.getElementById("animation_canvas");
console.log(canvas.parentNode.clientWidth);
canvas.width = canvas.parentNode.clientWidth;
canvas.height = canvas.parentNode.clientHeight;
if (!canvas.getContext) {
console.log("Canvas not supported. Please install a HTML5 compatible browser.");
return;
}
// get 2D context of canvas and draw rectangel
ctx = canvas.getContext("2d");
ctx.fillStyle="black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
myImage = document.createElement('img');
myImage.src = "../robin.png";
myImage.onload = loaded();
}
function loaded() {
imageReady = true;
setTimeout( update, 1000/30);
}
function redraw() {
ctx.clearRect(0, 0, 460, 460)
ctx.fillStyle="black";
ctx.fillRect(0, 0, 460, 460);
// find the index of frames in image
var height = myImage.naturalHeight/5;
var width = myImage.naturalWidth/5;
var row = Math.floor(frame / 5);
var col = frame - row * 5;
var offw = col * width;
var offh = row * height;
// first robin
px = px - 5;
py = py - 5;
if(px < -50) {
px = 300;
}
if(py < -50) {
py = 300;
}
//var rate = (frame+1) /22;
//var rw = Math.floor(rate * width);
//var rh = Math.floor(rate * height);
ctx.drawImage(myImage, offw, offh, width, height, px, py, width, height);
// second robin
x2 = x2 - 5;
y2 = y2 + 5;
if(x2 < -50) {
x2 = 300;
y2 = 0;
}
ctx.drawImage(myImage, offw, offh, width, height, x2, y2, width, height);
}
function update() {
redraw();
frame++;
if (frame >= 22) frame = 0;
setTimeout( update, 1000/30);
}
</script>
</head>
<body>
<h1>HTML Canvas Animations Demo - By Gloomy Fish</h1>
<pre>Play Animations</pre>
<div id="my_painter">
<canvas id="animation_canvas"></canvas>
</div>
</body>
</html>
温馨提示:内容为网友见解,仅供参考
无其他回答

h5怎么做动画效果(8步在线H5的简单制作方法)
左侧菜单栏,选择“页面”和“版式”,选择模板或从头开始。模板包含了预设的元素和动画,只需在右侧的编辑模块进行调整,如PPT一样方便。若从空白页开始,上方有各种素材选项,如文本、媒体等,点击添加后,时间轴会自动显示元素和动画效果。添加动画时,点击“动画”菜单,选择合适的动画样式,与制作PPT...

几种关于HTML5的动态效果制作方法
做一个逐帧动画必不可缺的就是需要一张等间距的“动画分解逐帧图片.png”,之后我们就可以通过修改 background-position 来完成一个“逐帧动画”。当然我们也可以通过设置特殊的图片,来完成一些特殊的效果。5.CSS3 动画CSS3应该是动画家族里绝对不会被遗忘的一名成员。这里我们定义它为 擅长于平面层...

如何用Adobe Edge做一个最简单的HTML5动画
1、首先在如图位置,用鼠标右击。点击新建合成组。2、在弹出的面板中,设置下面的持续时间为三秒,点击确定。3、然后在下面的面板中,鼠标右击,点击新建,选择固态层。4、在弹出的固态层设置中,设置宽高为200px,选择颜色为黄色,点击确定。5、下面我们已经建了一个固态层,点击键盘上的p键,调出位置功...

如何制作html5的动画效果?
主要思想:\\x0d\\x0a首先要准备一张有连续帧的图片,然后利用HTML5Canvas的draw方法在不同的时间间隔绘制不同的帧,这样看起来就像动画在播放。\\x0d\\x0a关键技术点:\\x0d\\x0aJavaScript函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScript方法,\\x0d\\x0a另外一个参数代表间隔时间...

HTML5用canvas怎么实现动画效果
HTML5用canvas实现动画效果的方法:<!DOCTYPE HTML> <html> <head> <style> body { margin: 0px;padding: 0px;} <\/style> <\/head> <body> <canvas id="myCanvas" width="578" height="200"><\/canvas> <script> window.requestAnimFrame = (function(callback) { return window.request...

h5特效用什么做h5特效用什么做的
12.在做数据的时候,可以应用到特效中,产生不同的视觉效果。完成所有页面设计后,您可以单击预览和设置。在预览和设置中预览最终h5页面的手机效果,点击设置修改标题、描述和封面。单击“确定”发布。怎样将别人发过来的H5进行修改?简单的说就是利用html5制作出来的页面。众多制作商都是将H5页面拆分成...

H5动画制作最全攻略,你值得收藏
五、代码实现动效 许多H5制作工具支持插入代码以辅助实现特定功能。例如,木疙瘩提供脚本工具,可添加代码如mugeda.addEventListener('renderReady',function(){})。对于精通前端的设计师,可将制作的H5页面导出为html文件,通过html5、css3.0与javascript实现复杂效果,如3D效果、svg与canvas绘图动画等。综上...

怎样通过HTML5让移动APP页面有动效?(二)
)再使用CSS3的animation控制stroke-dashoffset:效果不难吧!SVG还有各种用途,例如制作ICONFONT等,可以深入挖掘。4.重力陀螺仪 想让页面更有层次感,不妨让设计提供一些碎片元素,例如彩花,星星之类,然后把它们单独切出来放画面前景,使用陀螺仪伴随着手机运动碎片也跟着运动,多么好玩!这里提供一个工具可以...

如何基于HTML5实现数据统计饼图动画特效
animate 默认:false 说明:设置动画缓冲时间。onStart 默认:$.noop 说明:动画开始回调函数。onStop 默认:$.noop说明:动画结束回调函数。onStep 默认:$.noop说明:动画过程中回调函数。我刚开始看到上面这些属性,有点懵,相信大家也深感同受吧,下面就拿上面图作为实例谈谈如何使用。应用 ...

html5视频封面如何加动画效果?
你先把视频放好,css样式调节好,我这里的 class="v-txt text-center" 是我在视频的上放的文字以及图,效果就看你要怎么样子。这里我用的是 scrollReveal.js 也是一款页面滚动显示动画的 JavaScript,能让页面更加有趣,更吸引用户眼球。

相似回答