无法识别的选择器发送到类CCAnimation

时间:2012-12-07 21:32:13

标签: objective-c xcode cocos2d-iphone

我正在尝试使用cocos2d项目获取动画助手,并且出于某种原因不断收到错误消息:

unrecognized selector sent to class.

我尝试了很多方法都无济于事。我知道它可能与类实例冲突有关,但我不知道如何解决它。有什么想法吗?

这就是我调用辅助函数的方式:

CCAnimation* anim = [CCAnimation animationWithFrame:playerAnimName frameCount:1 delay:0.08f];

这是辅助函数本身:

     +(CCAnimation*) animationWithFrame:(NSString*)frame frameCount:(int)frameCount       delay:(float)delay
{
printf("start helper");

// load the players's animation frames as textures and create a sprite frame
NSMutableArray* frames = [NSMutableArray arrayWithCapacity:frameCount];
for (int i = 1; i < frameCount+1; i++)
{
    NSString* file = [NSString stringWithFormat:@"%@%i.png", frame, i];
    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];

    [frameCache addSpriteFramesWithFile:@"maze-art.plist"];


    CCSpriteFrame* frame = [frameCache spriteFrameByName:file];
    [frames addObject:frame];
}

// return an animation object from all the sprite animation frames
return [CCAnimation animationWithSpriteFrames:frames delay:delay];
}

任何见解都表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

要使类别起作用,必须按以下方式定义新方法。请参阅此http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

@interface ClassName ( CategoryName )
// method declarations
@end

例如,您的新方法必须定义为

@interface CCAnimation (Helper)
+(CCAnimation*) animationWithFile:(NSString*)name frameCount:(int)frameCount delay:(float)delay
{
       ...
}
@end

答案 1 :(得分:0)

你的辅助方法在哪里?如果它在你自己的班级里面,你必须把它称为

[MyClass method];

不是

[CCAnimation method];

+表示该方法是静态的,因此您必须使用此方法所在的类来调用它。