我正在尝试使用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];
}
任何见解都表示赞赏。谢谢!
答案 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];
+
表示该方法是静态的,因此您必须使用此方法所在的类来调用它。