Enemy という CCSprite サブクラスを作成しようとしています。
#import "Enemy.h"
@implementation Enemy
{
CCSprite* ant;
CCAnimation *walkAnim ;
}
-(id)init
{
self = [super init];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"char.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"char.png"];
[self addChild:spriteSheet];
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for (int i=1; i<=3; i++) {
[walkAnimFrames addObject:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
[NSString stringWithFormat:@"antNormal_%d.png",i]]];
}
walkAnim = [CCAnimation animationWithSpriteFrames:walkAnimFrames delay:0.1f];
self = [CCSprite spriteWithSpriteFrameName:@"antNormal_1.png"];
CCAction* walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim]];
[self runAction:walkAction];
return self;
}
@end
そして、私のゲームレイヤーに、このように敵を追加しました
enemies=[[CCArray alloc] initWithCapacity:100];
for (int i=0; i<10; i++) {
Enemy* ant=[[Enemy alloc] init];
[ant setPosition:ccp(100*i,100)];
[enemies addObject:ant];
}
しかし、これにより、プログラムがエラーで起動時にクラッシュします
'NSInternalInconsistencyException', reason: 'Animate: argument Animation must be non-nil'
ただし、CCAction をコメントアウトすると、アニメーションなしで敵が正しく表示されます (明らかに)。現時点ではこれを解決する方法がわかりません。