我想我主要是在对我使用 Player 类的方式以及如何改进它进行批评之后。
我的 spritesheet 包含我认为我需要的所有序列来执行我所追求的动作。但我最初想要的是,当我的“跳跃”按钮被按下时,角色正在经历的动画被停止,并且它使用的 spritesheet 中的“跳跃”序列。(步行 - 例如是第 7 帧到第 9 帧,跳跃是第 10 帧到第 13 帧)。
以下是我制作玩家精灵的方式:
播放器.m:
-(id)playerCharacter {
if (self = [super init]) {
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Soldier.plist"];
// Create a sprite sheet with the Player images
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"Soldier.png"];
[self addChild:spriteSheet z:15];
NSMutableArray *walking = [NSMutableArray array];
for(int i = 7; i <= 9; ++i) {
[walking addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Soldier%d.png", i]]];
}
CCAnimation *walkingAnimation = [CCAnimation animationWithSpriteFrames:walking delay:0.2f];
_walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkingAnimation]];
walkAnim.restoreOriginalFrame = NO;
[self runAction:_walkAction];
self.velocity = ccp(0.0, 0.0);
}
return self;
}
GameLevelLayer.m
player = [[Player alloc] playerCharacter];
player.position = ccp(100,50);
[map addChild:player z:15];
我想我的问题是..我是否应该将该方法的整个 CCAnimation 组件移出那里,进入一个新方法,该方法正在检查一系列定义 spritesheet / 动画序列的 BOOL?
我什至以最有效的方式使用上述代码吗?虽然我很欣赏它按原样工作.. 我宁愿了解我是否正确地做事,也不愿继续走一条增加我的项目效率低下的道路。
我非常感谢任何反馈和帮助。