私は主に、自分の Player クラスの使用方法とそれを改善する方法についての批判の後であると思います。
私のスプライトシートには、求めているアクションに必要と思われるすべてのシーケンスが含まれています。しかし、私が最初に望むのは、「ジャンプ」ボタンが押されたときに、キャラクターが通過しているアニメーションが停止し、それが使用したスプライトシートからの「ジャンプ」シーケンスです。(ウォーク - たとえば、フレーム 7 から 9 で、ジャンプはフレーム 10 から 13 です)。
プレイヤースプライトを作成する方法は次のとおりです。
Player.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コンポーネント全体をそこから移動して、スプライトシート/アニメーションシーケンスを定義する一連のBOOLをチェックする新しいメソッドに移動する必要がありますか?
上記のコードを最も効率的な方法で使用していますか? そのままで機能することは感謝していますが、プロジェクトに非効率性を追加する道を進むよりも、正しく行っているかどうかを理解したいと思います。
フィードバックやご支援をいただければ幸いです。