В моей игре iOS я надеюсь, что герой будет продолжать работать до тех пор, пока не коснется экрана, и герой должен прыгнуть. Итак, я пишу:
В файле .h:cocos2d sprite repeat animation forever
@interface Hero : CCSprite {
CCSprite *_hero;
id _keepRunning;
}
@property(nonatomic,retain) id keepRunning;
В .m файл:
@synthesize keepRunning = _keepRunning;
-(id) init {
_keepRunning = [CCRepeatForever actionWithAction:[CCAnimate actionWithSpriteSequence:@"heroRun%04d.png"
numFrames:30
delay:0.02f
restoreOriginalFrame:NO]];
}
Затем, когда начинается игра, я называю запуска() метод:
-(void) run {
[_hero stopAllActions];
[_hero runAction:_keepRunning];
_heroState = RUNNING;
}
Затем я обнаружил, что CCAnimate actionWithSpriteSequence: numFrames: delay: restoreOriginalFrame:
устарел в cocos2d версии 2.0. Итак, мой вопрос: в cocos2d v2.0, как я могу реализовать эту анимацию? А именно, держите моего героя в бегах? Спасибо!
EDIT:
Я попытался это:
-(CCAnimation*) getMyAnimationWithFramesName:(NSString*)nameFormat numFrames:(int)numFrames delay:(float)delay {
NSMutableArray *frames = [[NSMutableArray alloc] init];
for (int i = 1; i <= numFrames; i++) {
NSString *frameName = [NSString stringWithFormat:nameFormat,i];
[frames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName]];
}
CCAnimation *ani = [CCAnimation animationWithSpriteFrames:frames delay:delay];
return ani;
}
Тогда в Init():
_keepRunning = [self getMyAnimationWithFramesName:@"heroRun%04d.png" numFrames:30 delay:0.02f];
и в перспективе():
[_hero runAction:[CCAnimate actionWithAnimation:_keepRunning]];
Но до сих пор не Работа. Что мне делать?
Попробуйте увеличить задержку (т.е. 0,1). Попробуйте выполнить регистрацию имен фреймов и/или массива фреймов для проверки правильности имен. Кроме того, если вы не используете ARC, вы пропустите массив frames. – LearnCocos2D
@ LearnCocos2D Я проверил и обнаружил, что не использую ARC. В чем причина утечки массива кадров? Как это исправить? Спасибо! – lkkeepmoving
Утечка находится в первой строке вашего метода getMyAnimationWithFramesName: numFrames: delay:. Вы не уничтожаете нигде не созданный массив 'frames' – Morion