(NO.00001)iOS游戏SpeedBoy Lite成形记(三)
2015-10-20 16:23
525 查看
在Xcode中建立新类Player,继承自CCSprite.因为我们之后需要方便的更换玩家的大头贴,所以需要能够以不同的大头贴参数初始化Player对象.
不过别急,想想我们还需要在Player对象初始化中传入神马参数?一种可能是玩家的名字和编号.所以首先在Player接口中声明2个属性:
注意因为CCSprite中本身含有name属性,所以要用playerName,以免重复.
接下来在接口中写一个初始化方法声明:
打开Player.m文件,完成该方法的实现:
细心的童鞋可能发现上面调用的超类方法是 initWithImageNamed:,在这个例子中可能没什么影响,但是如果贴图巨多的情况下,可能恶化性能.所以还是使用精灵帧初始化,将其重构如下:
Player类的初始化方法基本写完了,下面回到GameScene中在didLoadFromCCB方法中添加如下代码:
因为本猫暂时只画了2个大头贴,所以只能在这2个大头贴中循环了: i%2+1.
不过别急,想想我们还需要在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.
相关文章推荐
- 峰回路转,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》实例