(NO.00001)iOS游戏SpeedBoy Lite成形记(六)
2015-10-20 17:27
369 查看
为了能让玩家可以在比赛结束时清楚看到每位选手的成绩,我们需要在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新增对应的实例变量:
顺便说一句,这里只有8个变量,所以手动添加还过得去.如果在SpriteBuilder中建立了成百上千的变量,还在这一个个手动添加就太傻了.
这时,一种办法是我们可以使这些变量成为某一自定义类的实例,然后在GameScene初始化方法中用Obj-C类的比较方法遍历其所有子对象,从而将所有符合该自定义类的对象过滤出来.以后有机会可以展示一下,这里就手动添加吧.
在GameScene的didLoadFromCCB方法中将这些标签添加到数组中去:
因为这些标签应该只在比赛结束时显示出来,所以游戏开始和每次比赛开始需要将其设为不可见,所以单独写一个方法干这事:
下面我们要改动matchRun方法了,待会见 ;)
在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方法了,待会见 ;)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 我是运营,我没有假期
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例