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 相关文章推荐
javascript实现div的显示和隐藏的小例子
Jun 25 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
Dec 13 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
Mar 01 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
Dec 20 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
如何在js代码中消灭for循环实例详解
Jul 29 Javascript
vuejs简单验证码功能完整示例
Jan 08 Javascript
javascript如何实现create方法
Nov 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/12/06 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
php 获取本地IP代码
2013/06/23 PHP
php构造函数与析构函数
2016/04/23 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
js常用排序实现代码
2010/12/28 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
package.json各个属性说明详解
2020/03/11 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python基础梳理(一)(推荐)
2019/04/06 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
什么是servlet
2012/05/08 面试题
新学期校长寄语
2014/01/18 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
师德师风整改措施
2014/10/24 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
golang json数组拼接的实例
2021/04/28 Golang