javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现


Posted in Javascript onJanuary 23, 2013

一、前言

这一讲的内容很简单,大家理解起来会更快。因此我只对重点加以分析,其他的就轮到大家思考哦!首先来说,我对游戏开发可以算是不怎么深入,因为现在的程序员爱用canvas,我却就只会拿几个div凑和。不过没关系,因为做出来的同样是游戏。哈!废话最近有点多,望大家原谅。接下来请看代码解析。

二、代码讲解

今天调一下讲解顺序,先看代码后看图片。

这是slg.js里的内容:

var subtractedMargin = 0; 
var subtractedMarginL = 0; 
var mousedown = 0; var toright; 
var toleft; 
var todown; 
var toup; 
window.onmouseup = function(){ 
mousedown = 0; 
clearInterval(toright); 
clearInterval(toleft); 
clearInterval(todown); 
clearInterval(toup); 
} 
function mapMove(direction) 
{ 
switch(direction){ 
case "down": 
subtractedMargin -= 15; 
$("#ID_IMG_MAP").animate({marginTop: subtractedMargin + "px"}, 120); 
break; 
case "up": 
subtractedMargin += 15; 
$("#ID_IMG_MAP").animate({marginTop: subtractedMargin + "px"}, 120); 
break; 
case "right": 
subtractedMarginL -= 15; 
$("#ID_IMG_MAP").animate({marginLeft: subtractedMarginL + "px"}, 120); 
break; 
case "left": 
subtractedMarginL += 15; 
$("#ID_IMG_MAP").animate({marginLeft: subtractedMarginL + "px"}, 120); 
break; 
} 
if(subtractedMarginL < -415){ 
clearInterval(toright); 
clearInterval(toleft); 
} 
if(subtractedMarginL > -20){ 
clearInterval(toright); 
clearInterval(toleft); 
} 
if(subtractedMargin < -640){ 
clearInterval(todown); 
clearInterval(toup); 
} 
if(subtractedMargin > -20){ 
clearInterval(todown); 
clearInterval(toup); 
} 
} 
$("body").ready(function(){ 
$("#ID_DIV_TORIGHT").mousedown(function(){ 
mousedown = 1; 
if(subtractedMarginL > -415 && mousedown == 1){ 
mapMove("right"); 
toright = setInterval(function(){mapMove("right");}, 120); 
} 
}); 
$("#ID_DIV_TOLEFT").mousedown(function(){ 
mousedown = 1; 
if(subtractedMarginL < -20 && mousedown == 1){ 
mapMove("left"); 
toleft = setInterval(function(){mapMove("left");}, 120); 
} 
}); 
$("#ID_DIV_TODOWN").mousedown(function(){ 
mousedown = 1; 
if(subtractedMargin > -640 && mousedown == 1){ 
mapMove("down"); 
todown = setInterval(function(){mapMove("down");}, 120); 
} 
}); 
$("#ID_DIV_TOUP").mousedown(function(){ 
mousedown = 1; 
if(subtractedMargin < -20 && mousedown == 1){ 
mapMove("up"); 
toup = setInterval(function(){mapMove("up");}, 120); 
} 
}); 
});

当大家看到本文题目时肯定不大了解题目的含义,因为太抽象了。现在做一下解释:可移动是代表可以向四面八方走动,地图就是地图,可以是世界地图,中国地图,游戏地图。。。反正必须是一张图。在此多说了两句,不过没关系,因为了解情况比不知庐山真面目要好得多。
接下来我把html代码再公布出来,因为这次html代码的重要性很大:
<html> 
<head> 
<title>SLG</title> <link rel="stylesheet" type="text/css" href="./main_looks.css" /> 
<script type="text/javascript" src="jquery-1.8.0.js"></script> 
<script type="text/javascript" src="./slg.js"></script> 
</head> 
<body> 
<div id="ID_DIV_SLGPAGE" style="width: 718px; height: 500px; border: 5px solid lightgray; overflow: hidden;"> 
<img src="./picture/map01.jpg" id="ID_IMG_MAP" style=" margin-top: 0px; margin-left: 0px;" /> 
</div> 
<!--<input type="button" value="Down" id="ID_BUTTON_DOWN" /> 
<input type="button" value="Up" id="ID_BUTTON_UP" /> 
<input type="button" value="Left" id="ID_BUTTON_LEFT" /> 
<input type="button" value="Right" id="ID_BUTTON_RIGHT" />--> 
<div id="ID_DIV_TORIGHT" style="width: 30px; height: 500px; border: 0px solid lightgray; position:absolute; z-index: 9; margin: -508px 0 0 689px;"></div> 
<div id="ID_DIV_TOLEFT" style="width: 30px; height: 500px; border: 0px solid lightgray; position:absolute; z-index: 9; margin: -508px 0 0 0px;"></div> 
<div id="ID_DIV_TODOWN" style="width: 718px; height: 30px; border: 0px solid lightgray; position:absolute; z-index: 10; margin: -41px 0 0 0px;"></div> 
<div id="ID_DIV_TOUP" style="width: 718px; height: 30px; border: 0px solid lightgray; position:absolute; z-index: 10; margin: -508px 0 0 0px;"></div> 
</body> 
</html>

现在大家可以对照两段代码看,值得注意得是有一点:在html代码中,我把一张图片放入了div,这时div原本是不会遮盖住图片的,但当你加上overflow: hidden;时就可以遮盖住图片了。

在这个程序中为了点击边框附近就能使地图移动,我用了四个div压住图片四边,当边框附近被点击时,就等于点了div,点了div就会调动相应函数。这样做虽然技术会有点差,不过也是一个好办法。

另一点值得注意得是:当点击边框附近调用函数时,我用了一个很特别的方法让地图一直移动,除非你松开鼠标。这个方法就是用setInterval()等待几秒后又移动,setInterval()又是个不停循环的东东,于是就一直调用下去,当松开鼠标时,就用clearInterval();让setInterval()停下,于是,这个环节搞定了!!!哈哈哈。

对了,不忘把图片给大家,图片有点大。。。

javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现 

三、演示效果

先看演示图片:

javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现

然后是:

javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
 

演示地址:
注意:进入demo后点击图片边缘便可以移动地图。

希望大家多支持!谢谢!

“用Javascript开发《三国志曹操传》”系列文章差不多到此就该结束了,下次我们来研究研究html5游戏开发。相信那更是智慧的挑战。敬请期待!---Yorhom Wang

Javascript 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
扩展JavaScript功能的正确方法(译文)
Apr 12 Javascript
js数组与字符串的相互转换方法
Jul 09 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
基于JS实现bookstore静态页面的实例代码
Feb 22 Javascript
解决Vue编译时写在style中的路径问题
Sep 21 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
Jan 23 #Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 #Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
Jan 23 #Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 #Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 #Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 #Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 #Javascript
You might like
PHP setTime 设置当前时间的代码
2012/08/27 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
javascript基本语法分析说明
2008/06/15 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
整理Python中的赋值运算符
2015/05/13 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
django url到views参数传递的实例
2019/07/19 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
Python基于execjs运行js过程解析
2020/11/27 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
长青弘远的面试题
2012/06/09 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
工程力学硕士生的自我评价范文
2013/11/16 职场文书
运动会稿件300字
2014/02/14 职场文书
校本教研活动总结
2014/07/01 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript