(NO.00001)iOS游戏SpeedBoy Lite成形记(三)
在Xcode中建立新类Player,继承自CCSprite.因为我们之后需要方便的更换玩家的大头贴,所以需要能够以不同的大头贴参数初始化Player对象.
不过别急,想想我们还需要在Player对象初始化中传入神马参数?一种可能是玩家的名字和编号.所以首先在Player接口中声明2个属性:
@property (nonatomic,strong) NSString *playerName;
@property (nonatomic,assign) NSInteger playerNumber;
注意因为CCSprite中本身含有name属性,所以要用playerName,以免重复.
接下来在接口中写一个初始化方法声明:
-(instancetype)initWithName:(NSString*) playerName Number:(NSInteger)number andFrameNumber:(NSInteger)frameNumber;
打开Player.m文件,完成该方法的实现:
-(instancetype)initWithName:(NSString *)playerName Number:(NSInteger)number andFrameNumber:(NSInteger)frameNumber{
NSString *frameName = [NSString stringWithFormat:@"Images/player-0%d.png",frameNumber];
self = [super initWithImageNamed:frameName];
if (self) {
self.playerName = playerName;
self.playerNumber = number;
}
return self;
}
细心的童鞋可能发现上面调用的超类方法是 initWithImageNamed:,在这个例子中可能没什么影响,但是如果贴图巨多的情况下,可能恶化性能.所以还是使用精灵帧初始化,将其重构如下:
NSString *frameName = [NSString stringWithFormat:@"Images/player-0%d.png",frameNumber];
CCSpriteFrame *frame = [CCSpriteFrame frameWithImageNamed:frameName];
//self = [super initWithImageNamed:frameName];
self = [super initWithSpriteFrame:frame];
Player类的初始化方法基本写完了,下面回到GameScene中在didLoadFromCCB方法中添加如下代码:
-(void)didLoadFromCCB{
Player *player;
for (int i = 0; i < PlayerCount; i++) {
NSString *playerName = [NSString stringWithFormat:@"Player%d",i+1];
player = [[Player alloc]initWithName:playerName Number:i+1 andFrameNumber:i%2+1];
[_track addChild:player];
[_players addObject:player];
}
[self initPlayPositon];
}
因为本猫暂时只画了2个大头贴,所以只能在这2个大头贴中循环了: i%2+1.
(NO.00001)iOS游戏SpeedBoy Lite成形记(三)的更多相关文章
- (NO.00001)iOS游戏SpeedBoy Lite成形记(三十):增加排行榜功能3
在这个例子中,我们的显示代码只需要选手的名字以及对应的成绩.根据选手名字取对应的成绩可以用前面实现的playerRecord:方法,我们只需要将按照成绩排序后的选手名字返回就可以了. 我只需要再实现一 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(一)
这是本猫第一个原创iOS游戏,留此为证!看编号貌似要写9万多个,千锤百炼还是太少吧!? ;) 这是一个赛跑游戏,几位选手从起点跑到终点看谁用的时间最少.现在需要实现的功能是: 1.8位选手从起点移动至 ...
- (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后每次都要输入数字才能关闭,这多少让人不爽.于是本篇我们就修正这个小小的不便. 首 ...
随机推荐
- 使用Java可以做得一些事
安卓 Web JSP使用Echarts的最简单的例子 微信 wechat4j weixin-java-tools weixin4j 网络服务器
- 拟将博客迁移到github
其实博客园网站速度挺快的, 但是markdown的显示没有github美观. 尤其是代码高亮这一块. 近日发现github pages + vue + github api + stackedit 能 ...
- User-Agent-Switcher和fiddler
浏览器模拟器(可以模拟各种浏览器效果,浏览器中看手机显示的效果) http://chromecj.com/web-development/2014-09/70.html User-Agent-Swit ...
- webpack2 配置 示例
// https://github.com/webpack-contrib/extract-text-webpack-plugin var webpack = require("webpac ...
- linux网络编程之一-----多播(组播)编程
什么是多播 组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传 送.对其形象的比喻就是类似于广播电台和电视 ...
- [端口扫描]S扫描器跨网段扫描
最近看了下端口扫描,用了几款扫描器,nmap啊,x-sacn等.之前很少关注安全方面的东西,所以也比较菜. 其中有一款叫做 "S扫描器"的,扫描速度非常快,可以大网段的扫描,几十万 ...
- Gazebo機器人仿真學習探索筆記(四)模型編輯
模型編輯主要是自定義編輯物體模型構建環境,也可以將多種模型組合爲新模型等,支持外部模型導入, 需要注意的導入模型格式有相應要求,否在無法導入成功, COLLADA (dae), STereoLitho ...
- Dynamics CRM2016 业务流程之Task Flow(一)
Task Flow 属于CRM移动端的特性,如果在项目实施中用不到CRM自带的APP或者对自APP不感冒的,那就没有往下看的必要了,移步吧. 该功能默认是不开启的,需要我们去系统设置中开启它,打勾,选 ...
- iOS开发之使用block块进行数据遍历的方法
看了一篇文章,发现遍历数组.字典中的数据时,除了使用for循环外,还可以使用block块进行操作,瞬间感觉iOS的语言代码确实有点高大上的感觉,下面就简单的介绍一下这个方法. 首先是最基本的运用形式, ...
- 6.0、Android Studio性能优化工具
显示图像包含四个步骤.简单来说,CPU对比显示列表,GPU渲染图片显示,内存存储图片和数据,电池提供点力能源.每个部分的硬件都有限制,超过这个限制会导致应用运行较慢,显示性能差,或者耗电. 为了查找造 ...