炸弹人游戏开发过程(3) 显示地图

前言

上文我们进行了初步的高层设计,现在我们将实现图片预加载和显示地图的功能需求。本文开始我采用TDD开发,大家可以看到在实现的过程中我们会修改设计,修改设计后又会修改对应的实现代码,这是一个不断迭代的过程。在有测试套件的保护下,我们可以放心地重构。

本文目的

掌握地图绘制的技术。

回顾上文与显示地图相关的领域模型

开发策略

使用我的控件YPreLoadImg来实现图片预加载,结合progressBar插件,能够显示出加载进度条。

只建一个ShowMap类,用这个类来进行实验,找到显示地图的方法,然后在重构的时候再分离出Main类和MapData数据类。

原因

因为我对canvas很不熟悉,需要先集中精力熟悉canvas的使用,而不是把精力放在架构设计上。

因为我是采用TDD开发,因此可以安全地进行重构。可以在实现“显示地图”功能后,再在重构时提炼出Main和MapData类。

开发策略也是迭代修正的

开发策略只是就当前的知识指定的大概计划,会随着开发的进行而进行细化和修正。如现在的开发策略并没有考虑到在重构时会增加Game类。

预加载图片

预加载的目的

将图片下载到本地内存中。

为什么要预加载

必须等到图片完全加载后才能使用canvas对图片进行操作。如果试图在图片未完全加载之前就将其呈现到canvas上,那么canvas将不会显示任何图片。

如果不使用预加载,则在使用图片之前需要先下载图片到本地。即使有浏览器优化,第一次使用图片时也需要先下载图片,这样在第一次使用图片时,会有卡的感觉。

因此,在游戏开始之前,先要进行游戏初始化,预加载游戏所需的图片。

如何进行预加载

基本示例:

var img = new Image();    //创建一个图片对象
img.src = "test.png"; //下载该路径的图片
img.onload = function () { //图片下载完毕时异步调用callback函数。     callback(img); };

预加载网上教程

js图片预加载

js 实现图片预加载

浏览器重图片的预加载问题onload事件

显示进度条

YPreLoadImg控件结合进度条插件progressbar,可以显示出进度条。

新增ShowMap类并实现预加载图片

新增ShowMap类,使用TDD开发并实现预加载图片,需要先写测试用例。

这里先简单介绍下测试驱动开发的步骤:

写一个测试用例,验证行为

运行测试,检查测试用例本身是否有错误(测试是否按自己所期望的方式失败)。

写实现代码,使得测试通过

重构代码

运行测试,使得测试通过

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索开发
, 图片
, 地图
, 测试
, 地图开发
, 重构
, 图片显示不完全
, 进度
, 预加载
, 显示加载中
, 不显示本地图片
, 预加载图片
, 类加载过程
图片预加载
游戏开发过程、大型游戏开发过程、百度地图游戏开发、游戏开发的过程、独立游戏的开发过程,以便于您获取更多的相关知识。

时间: 2024-09-08 01:20:04

炸弹人游戏开发过程(3) 显示地图的相关文章

炸弹人游戏开发过程(4) 炸弹人显示与移动

前言 在上文中,我已经介绍了如何测试.如何重构测试,并且通过实验掌握了地图显示的技术.本文会将地图显示的技术用到炸弹人显示中,并且让我们的炸弹人动起来. 注:为了提升博文质量和把重点放在记录开发和迭代的思想实践,本文及后续博文将不再记录测试过程. 本文目的 实现炸弹人的显示和移动 回顾上文更新后的领域模型 对领域模型进行思考 ShowMap类是负责显示地图,包含了游戏逻辑.而Game类职责是负责游戏逻辑,因此ShowMap和Game在职责上是有重复的.况且显示地图这部分逻辑并不是很复杂,可以不需

炸弹人游戏开发过程(1) 准备工作

前言 大家好!本系列博文记录了我的炸弹人游戏迭代开发的过程.在开发的过程中,代码会不断重构,领域模型会不断演变,高层划分也会不断变化. 博文重点在于记录面向对象思想运用.重构.迭代开发的过程,对于游戏的实现细节和原理不会深入讨论. 希望能与大家一起分享游戏开发的过程和乐趣,为大家运用oo思想和实践迭代开发提供力所能及的帮助. 关键词 面向对象.测试驱动开发.重构.迭代.领域模型.炸弹人游戏 最终成果 下面是完成整个游戏开发后的成果,大家可以先预览一下. 游戏截图 演示地址:http://yang

炸弹人游戏开发过程(2) 初步设计

前言 有了上文的初步需求分析后,就可以进入初步设计阶段了. 本文目的 得到初步的领域模型,对层和模块进行初步的划分. 技术选择 首先,要确定选择什么技术来开发游戏. 我以前开发过网站,也开发过javascript游戏,因此我决定使用web技术开发. 然后就是决定是采用传统的Html4,还是最新的Html5. 最终我决定使用Html5技术,因为使用Html5有如下的好处: 可以使用强大的Canvas API绘制游戏图像方面. 未来可以使用本地存储.离线存储技术来存储游戏所需的数据,实现游戏的保存和

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络连接和APIKey申请都是正确的,就是不知道为什么不能显示,网上也有很多人遇到这个问题,有的是SDK更新不兼容.而且网上很多百度地图都是使用V2.3.1版本,后来没有办法只有通过baidumapapi_v2_4_1.jar完成显示地图.    其中需要注意的是使用2.3.1时调用manager.in

ios-在IOS上我想做一个调用自带地图,但又不显示地图,只要定位出详细地址的APP

问题描述 在IOS上我想做一个调用自带地图,但又不显示地图,只要定位出详细地址的APP 因为我是新手,想自己做一个简单的APP,功能如下: 1.首页上,点击定位按钮(dwButton),能在一个XS(label控件)上显示我现在所在位置的详细地址,比如:中国广东省深圳市南山区登良路26号XX大厦 2.点击历史定位按钮 (lsButton),跳转到一个新的列表上,能查看过去定位过的地址(地址在10~20个),最下面有一个返回按钮(fhButton),点击跳回首页 3.过去定位过的地址会保存在本地数

后台管理系统上的一个百度地图控件无法显示地图问题!

问题描述 后台管理系统上的一个百度地图控件无法显示地图问题! 谷歌,ie都测试可以显示,唯独火狐不显示,测试火狐版本为最新版!

(NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小伙伴都知道,在炸弹人游戏中一共准备实现4种敌人.不同的怪物要有不同的特点,否则如果只是外形发生变化其余行为都一样的话,也就没有什么意思了. 我们本篇先介绍第一种,也是最普通的火焰精灵FireSprite. 首先需要找到火焰精灵对应的素材: 用TexturePacker制作成Cocos2D可以使用的纹

java 地图-java中输入身份证号,怎么显示地图上的省份

问题描述 java中输入身份证号,怎么显示地图上的省份 1.在面板中输入身份证号,就会在地图上所在省份显示性别,年龄.2.点击地图上的省份,然后就会在面板上反馈省份代号.急求,菜鸟刚入门

arcgis-Arcgis for android 怎么显示地图,并且在地图上画路线,计算面积

问题描述 Arcgis for android 怎么显示地图,并且在地图上画路线,计算面积 我现在已搭建好了 android 平台(ADT),请问在怎么弄 arcgis for Android 的 平台 ,最好有 arcgis for android 这个工具开发的,能画路线,面积,等程序或方法,拜托大神们帮小弟指点迷津. 解决方案 首先你要搭好安卓开发环境,ADT+Eclipse,网上教程很多.然后需要安装ArcGIS开发相关的库和Eclipse插件. 你可以下一本 ArcGIS API fo