canvas实现方向键控制人物行走动画

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#myCanvas {
border: 1px solid #ccc;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="600" height="400"></canvas>

<script>
var Person = function(ctx) {
// 绘制工具
this.ctx = ctx || document.getElementById(‘myCanvas‘).getContext(‘2d‘);
// 图片路径
this.src = ‘timg.jpg‘;
// 画布的大小
this.canvasWidth = this.ctx.canvas.width;
this.canvasHeight = this.ctx.canvas.height;
// 定义行走的参数
this.stepSize = 5; // 步伐大小
this.direction = 0; // 0往前 ,1往左,2往右,3往后
this.stepX = 0; // 行走方向
this.stepY = 0; // 行走方向
//初始化方法
this.init();
};
// 定义初始化方法
Person.prototype.init = function() {
//保存当前this
var that = this;
// 加载图片
this.loadImage(function(image) {
// 图片的大小
that.imageWidth = image.width;
that.imageHeight = image.height;
// 人物的大小
that.personWidth = that.imageWidth / 4;
that.personHeight = that.imageHeight / 4;
// 绘制图片的起点
that.x0 = that.canvasWidth / 2 - that.personWidth / 2;
that.y0 = that.canvasHeight / 2 - that.personHeight / 2;

// 默认绘制在中心位置朝外
that.ctx.drawImage(image, // 图片
0, 0, // 从图片的坐标位置开始
that.personWidth,that.personHeight, // 截取多大的图片
that.x0, that.y0, // 从画布的起点开始
that.personWidth, that.personHeight); // 画多大

// 添加方向键控制图片的行走
that.index = 0;
document.onkeydown = function(e) {
if(e.keyCode == 37) {
// 左
that.direction = 1;
that.stepX--;
that.drawImage(image);
// 前
}else if(e.keyCode == 38) {
that.direction = 3;
that.stepY--;
that.drawImage(image);
}else if(e.keyCode == 39) {
// 右
that.direction = 2;
that.stepX++;
that.drawImage(image);
}else if(e.keyCode == 40) {
// 后
that.direction = 0;
that.stepY++;
that.drawImage(image);
}
}
});
};

// 加载图片的方法
Person.prototype.loadImage = function(callback) {
var image = new Image();
image.onload = function() {
callback && callback(image);
};
image.src = this.src;
};

Person.prototype.drawImage = function(image) {
this.index++;
// 清除画布
this.ctx.clearRect(0,0,this.canvasWidth,this.canvasHeight);
// 默认绘制在中心位置朝外
this.ctx.drawImage(image, // 图片
this.index * this.personWidth, this.direction * this.personHeight, // 从图片的坐标位置开始
this.personWidth,this.personHeight, // 截取多大的图片
this.x0 + this.stepX * this.stepSize, this.y0 + this.stepY * this.stepSize, // 从画布的起点开始
this.personWidth, this.personHeight); // 画多大

if(this.index >= 3) {
this.index = 0;
}
};

new Person();

</script>
</body>
</html>

原文地址:https://www.cnblogs.com/fuyou-it/p/10494985.html

时间: 2024-10-09 21:12:50

canvas实现方向键控制人物行走动画的相关文章

HTML5方向键控制会奔跑的马里奥大叔

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>HTML5会奔跑的马里奥大叔丨石家庄幼师|河北叉车|河北品牌策划公司</title> </head> <body> <div align="cen

html5 canvas首屏自适应背景动画循环效果代码

模板描述:html5 canvas首屏自适应背景动画循环效果代码 由于动态图太大,怕以后服务器受不了,所以现在都改为静态图了,大家点击演示地址一样的,希望大家喜欢,你们的支持就是小海的动力!! 欢迎大家积极评论,给出宝贵意见 下 载 演示地址 本文地址:html5 canvas首屏自适应背景动画循环效果代码

css3控制多重动画效果

今天看到一个类似于门窗开关效果.想着用css3实现,当然js是可以必须能够实现的.我主要想体验一把css3的神奇. 0102 01图片缩小,缩小到看不到之后,出现02图片放大的效果. 实现原理:用一个外层div来触发hover效果,里面套两个图片div, 分别为图一和图二 主要使用css3的transform和transition效果,而且比较重点的是transition-delay延时属性. 具体代码 html-------------------------- <div id="out

可控制GIF动画图片播放和暂停jQuery插件

gifplayer是一款可以控制GIF动画格式图片播放和暂停的jQuery插件.该jQuery插件使用简单,文件体积小.可用于控制任何GIF动画图片的开始播放和暂停播放. 要使用该GIF动画图片jquery插件,可以分为下面的五个步骤: 在你的页面中添加一个静态版本的GIF图片,格式为PNG.jpg等图片格式都可以. 在img标签中添加data-gif属性指向GIF动画图片,或者不写也可以. 在图片文件夹中放置.gif格式的图片和它的静态版本的图片,两个图片的名称要相同. 在你的页面中引入gif

第166天:canvas绘制饼状图动画

canvas绘制饼状图动画 1.HTML 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 6

动画的内容与控制:动画是视图序列的播放

数据结构与算法的观点: 数据结构:视图序列: 算法:播放控制: 动画是采用连续播放静止图像的方法产生物体运动的效果. 动画是视图(图像)序列的播放: 动画的内容:图片 包含图片的生成: 图片的处理:合成.光学.几何操作等: 动画的控制:动画的播放控制 播放的基本单元是帧: 播放是将图片序列在时间轴上逐帧展示: 播放的控制: 1.速率控制 2.时长控制: 3.反复控制: 4.停播控制: 原文地址:https://www.cnblogs.com/feng9exe/p/10345488.html

用canvas实现红心飘飘的动画效果

两周前,项目里需要实现一个红心飘飘的点赞效果.抓耳挠腮了老半天,看了几篇大佬的文章,终于算是摸了个七七八八.不禁长叹一声,还是菜啊.先来看一下效果:(传送门进去点一波) 一.Bezier曲线运动轨迹 其实用大白话描述一下需求就是让一个红心图片沿着贝塞尔曲线的轨迹走,然后边走边消失.核心在于得到贝塞尔曲线上的一系列点.本文不会讲解贝塞尔曲线的原理,因为大佬们已经讲过了,而且讲的比我好.参考文章如下: 用canvas绘制一个曲线动画--深入理解贝塞尔曲线 bezierMaker.js--N阶贝塞尔曲

Android 中通过切割图片创建人物行走动画

以前一直使用序列图片来实现动画效果,造成空间的极大浪费,所以想要尝试下切割图片来实现动画. 如图所示,是由66rpg纸娃娃系统生成的角色行走图.本程序必须实现将人物的整体图片切割后存入4x4的数组来动态加载. 在主布局文件中设立4个ImageView,分别用来显示角色在不同角度下的行走动作.然后在主活动文件中: public class MainActivity extends ActionBarActivity {private ImageView myImageView,myImageVie

HTML5 Canvas 梦幻的文字飞扬动画教程

之前为大家介绍了一款HTML5/CSS3 3D文字特效 文字外翻效果.今天为大家带来的是html5 canvas实现的文字漂动动画效果.画面非常梦幻. 在线预览   源码下载 实现代码如下: html代码: <div class="dg ac"> <div class="dg main a taller-than-window" style="width: 245px;"> <div style="widt