javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现


Posted in Javascript onJanuary 23, 2013

上一讲我们谈到了如何让静态人物变为动态,今天我们来谈谈如何使人物移动,因为这一讲涉及上一讲内容所以我把上一讲的链接写在下方:

一、图片准备

今天我准备换几张图片,这样更新鲜些。

javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
这些素材照样来自《三国志曹操传》,如果我没记错,应该是曹操的素材。接下来我要结合上一次的技术,来告诉大家如何使人物走动起来。不过今天我们着重在于如何使人物走动,因为我们上一讲已经讲了如何使人物化静态为动态。

二、代码讲解

先看总的javascript代码:
var moveLengthLeft = 0; 
var moveLengthTop = 0; var actionST = 0; 
var timeInterval = 150; 
var pic = 0; 
function action() 
{ 
var pic1 = "./pic2.png"; 
var pic2 = "./pic3.png"; 
var pic3 = "./pic1.png"; 
var actionArray = [pic1, pic2, pic3]; 
var doc = document.getElementById("ID_IMG_CAOCAO"); 
if (pic == actionArray.length - 2){ 
pic = 0; 
}else{ 
pic += 1; 
} 
if(pic > 2){ 
pic = 2; 
doc.src = "./pic1.png" 
} 
doc.src = actionArray[pic]; 
} 
function walk() 
{ 
setInterval(action, timeInterval); 
for(var i = 0; i < 100; i++){ 
$("#ID_IMG_CAOCAO").animate({marginLeft: moveLengthLeft}, 10, function(){ //用jquery中的animate来控制人物行走 
actionST ++; 
if(actionST == 100){ 
standCaocao(); 
} 
}); //在动画做完时调用callback。callback里可以放函数。 
$("#ID_IMG_CAOCAO").animate({marginTop: moveLengthTop}, 10); 
moveLengthLeft += 2; 
moveLengthTop += 1; 
} 
} 
function standCaocao() 
{ 
pic = 2; 
}

局部分析如下:
function action() 
{ 
var pic1 = "./pic2.png"; 
var pic2 = "./pic3.png"; 
var pic3 = "./pic1.png"; 
var actionArray = [pic1, pic2, pic3]; var doc = document.getElementById("ID_IMG_CAOCAO"); 
if (pic == actionArray.length - 2){ 
pic = 0; 
}else{ 
pic += 1; 
} 
if(pic > 2){ 
pic = 2; 
doc.src = "./pic1.png" 
} 
doc.src = actionArray[pic]; 
}

以上代码我已经在上一讲提到过了,所以今天就不再过问了,直接讲如何移动人物。

首先来说,使物体移动无疑要想到jquery,不错今天我们是要用到它的一个函数:animate。
再看代码:

function walk() 
{ 
setInterval(action, timeInterval); for(var i = 0; i < 100; i++){ 
$("#ID_IMG_CAOCAO").animate({marginLeft: moveLengthLeft}, 10, function(){ //用jquery中的animate来控制人物行走 
actionST ++; 
if(actionST == 100){ 
standCaocao(); 
} 
}); //在动画做完时调用callback。callback里可以放函数。 
$("#ID_IMG_CAOCAO").animate({marginTop: moveLengthTop}, 10); 
moveLengthLeft += 2; 
moveLengthTop += 1; 
} 
}

这些代码能实现人物走动和停住主要在于callback和animate。callback主要是使人物停下,animate主要是使人物移动。

通常,animate的语法是:animate({css代码的改变}, 完成要用的时间, callback);。详情请看:https://3water.com/w3school/jquery/jquery_effects.htm,这里面还有很多其他jquery函数,可以多了解了解。

当然,animate显而易见,但callback呢???原来它藏在了animate里面。

function(){ //用jquery中的animate来控制人物行走 
actionST ++; if(actionST == 100){ 
standCaocao(); 
} 
}); //在动画做完时调用callback。callback里可以放函数。

这段代码便是callback。只不过我们把他的位置放上了函数,所以不怎么让人看得见。
callback的一些教程: https://3water.com/w3school/jquery/jquery_callback.htm

另外还有一串代码:

function standCaocao() 
{ 
pic = 2; 
}

这段代码主要是用来使动态人物变为静态人物。这样移动停止后,人物动作也没了。

源代码下载:(包括一个jquery-1.8.0.js文件)

三、演示效果

首先是:

javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现

然后是:

javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现

最后是:

javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现

演示位置

四、后记

首先人物行走和动作是游戏制作必不可少的环节,选择良好的算法和函数是成功的关键。
下一次我们将研究如何用js仿《三国志曹操传》人物情节对话。敬请期待!

希望大家多支持,谢谢。我会以更好的文章来回报大家。

Javascript 相关文章推荐
基于jquery的无刷新分页技术
Jun 11 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
Jul 13 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
分享JS数组求和与求最大值的方法
Aug 11 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
angular 服务的单例模式(依赖注入模式下)详解
Oct 22 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
vue实现搜索功能
May 28 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 #Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 #Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 #Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 #Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 #Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
Jan 23 #Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 #Javascript
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
模仿OSO的论坛(五)
2006/10/09 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
js程序中美元符号$是什么
2008/06/05 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
房地产开盘策划方案
2014/02/10 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
婚礼新人答谢词
2015/01/04 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
个人廉政承诺书
2015/04/28 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript