私のゲームでは、単純なフレームごとのアニメーションが必要です。アニメーションは、init 関数で使用すると正常に動作しますが、アクションを停止して再開しようとすると、何も起こりません。
これは初期化にあります
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:
@"Dubstep Dan_default.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode
batchNodeWithFile:@"Dubstep Dan_default.png"];
[self addChild:spriteSheet];
walkAnimFrames = [NSMutableArray array];
for(int i = 1; i <= 8; ++i) {
[walkAnimFrames addObject:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
[NSString stringWithFormat:@"1-%d.png", i]]];
}
walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
self.character = [CCSprite spriteWithSpriteFrameName:@"1-1.png"];
_character.position = ccp(80, 260);
self.walkAction = [CCRepeatForever actionWithAction:
[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
// self.walkAction = [CCAnimate actionWithAnimation:walkAnim];
[_character runAction:_walkAction];
[_walkAction retain];
[spriteSheet addChild:_character];
これは私のゲームティック関数にあります
if(gp.isControlling && (gp.controlQuadrant == 0 || gp.controlQuadrant == 1) && (_character.position.x < 250))
{
if([_walkAction isDone]) {
[_character runAction:_walkAction];
NSLog(@"TEST");
}
targetX = 7;
_character.scale = 1;
}
else {
[_character stopAction:_walkAction];
targetX = 0;