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 相关文章推荐
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
Jun 19 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 Javascript
在线所见即所得HTML编辑器的实现原理浅析
Apr 25 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
js查看一个函数的执行时间实例代码
Sep 12 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 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进程之间实现共享内存的方法
2014/06/13 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
举例详解Python中yield生成器的用法
2015/08/05 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python中if及if-else如何使用
2020/06/02 Python
如何理解python对象
2020/06/21 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
数控专业推荐信范文
2013/12/02 职场文书
学习之星事迹材料
2014/05/17 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
实习科室评语
2015/01/04 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏