(NO.00001)iOS游戏SpeedBoy Lite成形记(六)
为了能让玩家可以在比赛结束时清楚看到每位选手的成绩,我们需要在GameScene场景的track对象中添加一些新的元素.
在SpriteBuilder中打开GameScene.ccb,创建1个标签对象,使其成为track的子对象.注意不是GameScene根节点的子对象哦.
修改该标签的位置使其差不多位于第1赛道的后半场跑道中,比如我将其放在相对于父对象的(60%,3%)位置上.按照个人喜好修改字体和文字大小.
觉得比较满意时,将该label复制7次,同样是它们成为track的子对象.这样track一共包含了8个标签对象.
修改新添加标签的位置,按照1/8的倍数累加,别忘了最后要加上3%,最后的效果如下:
给这8个标签设置代码链接,分别为:_labelTrack1至_labelTrack8.
因为链接位置是Doc root var,所以它们都成为GameScene的实例对象而不是track的实例变量.再说我们也没有创建Track类.
下面回到Xcode中,打开GameScene.m新增对应的实例变量:
CCLabelTTF *_labelTrack1;
CCLabelTTF *_labelTrack2;
CCLabelTTF *_labelTrack3;
CCLabelTTF *_labelTrack4;
CCLabelTTF *_labelTrack5;
CCLabelTTF *_labelTrack6;
CCLabelTTF *_labelTrack7;
CCLabelTTF *_labelTrack8;
NSMutableArray *_labelArray;
顺便说一句,这里只有8个变量,所以手动添加还过得去.如果在SpriteBuilder中建立了成百上千的变量,还在这一个个手动添加就太傻了.
这时,一种办法是我们可以使这些变量成为某一自定义类的实例,然后在GameScene初始化方法中用Obj-C类的比较方法遍历其所有子对象,从而将所有符合该自定义类的对象过滤出来.以后有机会可以展示一下,这里就手动添加吧.
在GameScene的didLoadFromCCB方法中将这些标签添加到数组中去:
[_labelArray addObject:_labelTrack1];
[_labelArray addObject:_labelTrack2];
[_labelArray addObject:_labelTrack3];
[_labelArray addObject:_labelTrack4];
[_labelArray addObject:_labelTrack5];
[_labelArray addObject:_labelTrack6];
[_labelArray addObject:_labelTrack7];
[_labelArray addObject:_labelTrack8];
[self invisibleAllLabels];
因为这些标签应该只在比赛结束时显示出来,所以游戏开始和每次比赛开始需要将其设为不可见,所以单独写一个方法干这事:
-(void)invisibleAllLabels{
for (CCLabelTTF *label in _labelArray) {
label.visible = NO;
}
}
下面我们要改动matchRun方法了,待会见 ;)
(NO.00001)iOS游戏SpeedBoy Lite成形记(六)的更多相关文章
- (NO.00001)iOS游戏SpeedBoy Lite成形记(一)
这是本猫第一个原创iOS游戏,留此为证!看编号貌似要写9万多个,千锤百炼还是太少吧!? ;) 这是一个赛跑游戏,几位选手从起点跑到终点看谁用的时间最少.现在需要实现的功能是: 1.8位选手从起点移动至 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(三十):增加排行榜功能3
在这个例子中,我们的显示代码只需要选手的名字以及对应的成绩.根据选手名字取对应的成绩可以用前面实现的playerRecord:方法,我们只需要将按照成绩排序后的选手名字返回就可以了. 我只需要再实现一 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)
之前的10篇内容主要实现了选手从起点移动至终点的动作,比较随机的模拟了选手的速度变化,另外完成了选手到达终点时该做的事情. 接下来的几篇中我们进一步完善SpeedBoy Lite项目,使它真正成为一个 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十三)
游戏特效部分就先这样了,因为毕竟是Lite版本,而且是第一个App,所以咱们把主要精力放在游戏可玩逻辑上吧(虽然已经厚颜无耻的加了不少特效了). 说句题外话:游戏美工是独立开发者不可逾越的鸿沟,是无法 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
游戏大体上基本也就完成了,还差一个排行榜.否则如何激励各位选手创造新纪录呢? 排行榜功能也没什么难的,不过需要一点点排序的算法上的考虑. 这里我们把排行榜记录数据和排序都放在GameState类中,在 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十七)
切换回Xcode,在GameScene.m中添加新的实例变量:_winLayer. 接下来在第一个选手到达终点时,我们可以完成选手胜利的动画特效了. 首先,在GameScene.m中添加一个新方法pl ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十四)
我们回到Xcode,打开GameScene.m,首先要添加实例变量: CCNode *_trackLine; 为了根据选中的赛道更新_trackLine的位置,我们添加一个显示方法: -(void)s ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十三)
现在还有一个视觉上的问题:玩家每次在游戏开始前选择某一赛道时,无法直观的看到所选的是哪条赛道.只能通过界面上方的gambleLabel中的文字非直观的看到.我们现在来完善它! 为了能让玩家清楚地看到, ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)
自己的游戏自己更需要多玩,这样才能首先发现不足的地方.所以本猫到现在已经忍一个地方很久了,就是弹出moneyLayer后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...
随机推荐
- Struts2 转换器
转换器 从一个 HTML 表单到一个 Action 对象,类型转换是从字符串到非字符串 Http 没有 "类型" 的概念,每一项表单的输入只可能是一个字符串或一个字符串数组,在服务 ...
- Numpy函数学习--genfromtxt函数
genfromtxt函数 今天学习时遇到了genfromtxt函数 world_alcohol = numpy.genfromtxt("world_alcohol.txt",del ...
- ACM Misha and Changing Handles
Misha hacked the Codeforces site. Then he decided to let all the users change their handles. A user ...
- Java内存泄漏分析系列之五:常见的Thread Dump日志案例分析
原文地址:http://www.javatang.com 症状及解决方案 下面列出几种常见的症状即对应的解决方案: CPU占用率很高,响应很慢 按照<Java内存泄漏分析系列之一:使用jstac ...
- Linux系统网络性能实例分析
由于TCP/IP是使用最普遍的Internet协议,下面只集中讨论TCP/IP 栈和以太网(Ethernet).术语 LinuxTCP/IP栈和 Linux网络栈可互换使用,因为 TCP/IP栈是 L ...
- Dynamics 365 你所期待的子网格编辑终于来了
Dynamics 365的online版本已经在11月1号发布了,on-premises版也在没几天后发布,今天略看了一眼 what's new 一眼就看到了 editable grids,这个不用我 ...
- MySQL注释中的sql也可能执行
MySql支持三种注释形式:# 和–属于单行注释,注释范围为该行的结尾:/* */注释属于多行注释,此外该种注释还可以实现行内注释.具体的使用情况如下图中所示(四种使用情形): 除此之外,/* */这 ...
- 在java程序中实现发送邮件的功能
最近比较忙,在做一个人事管理系统的项目,在这项目需求中,需要一个发送邮件的功能.这个时候我们可以使用javamail的jar包来实现完美需要的功能,在这里简单的分享一个最基础的发邮件功能. 首先我们需 ...
- 详解EBS接口开发之供应商导入
(一)供应商常用标准表简介 1.1 常用标准表 如下表中列出了与供应商相关的表和说明: 表名 说明 其他信息 ap_suppliers 供应商头表 供应商的头信息如:供应商名.供应商编码.税号等 ...
- UNIX网络编程——select函数的并发限制和 poll 函数应用举例
一.用select实现的并发服务器,能达到的并发数,受两方面限制 1.一个进程能打开的最大文件描述符限制.这可以通过调整内核参数.可以通过ulimit -n来调整或者使用setrlimit函数设置, ...