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 input 数字验证代码
Jul 30 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
vue小图标favicon不显示的解决方案
Sep 19 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
layui 给数据表格加序号的方法
Aug 20 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
Javascript中的this,bind和that使用实例
Dec 05 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
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高级OOP技术演示
2009/08/27 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python实现学生管理系统开发
2020/07/24 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
员工生日活动方案
2014/08/24 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
2016教师节感恩话语
2015/12/09 职场文书
Python代码实现双链表
2022/05/25 Python