Cocos2d v3错误:无法识别的选择器发送到实例

时间:2014-02-24 08:18:04

标签: objective-c cocos2d-iphone

我使用cocos 2创建示例游戏。 Mysprite.h:

#import <Foundation/Foundation.h>
#import "cocos2d.h"

typedef NS_ENUM(NSInteger, SpriteColor) {
    Color_Nil,
    Color_Red,
    Color_Yellow,
    Color_Violet,
    Color_Green,
    Color_Turquoise
};

@interface MySprite : CCSprite
@property  int row;
@property int column;
@property  SpriteColor spriteColor;

-(void )spriteWithColor:(SpriteColor) c Row:(int)ro Column:(int)col;
-(void)setRow:(int)ro AndColumn:(int)col;
-(BOOL)touchInSprite:(CGPoint) point;
-(id)init;
-(void)touchAnimation;
@end

Mysprite.m:

#import "MySprite.h"


@implementation MySprite
@synthesize spriteColor=_spriteColor;
@synthesize row=_row;
@synthesize column=_column;
-(void )spriteWithColor:(SpriteColor) c Row:(int)ro Column:(int)col{
    _spriteColor=c;
    [self setRow:ro AndColumn:col];
}

-(void)setRow:(int)ro AndColumn:(int)col{
    _row=ro;
    _column=col;
}
-(BOOL)touchInSprite:(CGPoint) point{
    if (CGRectContainsPoint(self.boundingBox, point)) {
        return YES;
    }
    return NO;
}
-(void)touchAnimation{
    id scale =[CCActionScaleTo actionWithDuration:2 scale:2] ;
    [self runAction:scale];

}
-(void)removeAnimation{

}
-(void)fallAnimation{

}
@end

初始精灵的方法:

 MySprite *sp =[CCSprite spriteWith`ImageNamed:[NSString stringWithFormat:@"t%i.png",color]];`
  [sp spriteWithColor:color Row:row Column:column];

它总是显示错误:   2014-02-24 15:14:20.637 Bee [768:a0b] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [CCSprite spriteWithColor:Row:Column:]:无法识别的选择器发送到实例0x97da5a0'。

请让我知道我做错了什么以及如何解决它。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

您的错误:您正在创建CCSprite的对象并将其分配给MySprite。然后通过CCSprite对象调用MySprite类中的方法。这导致崩溃。

这样做:

MySprite *sp =[MySprite spriteWithImageNamed:[NSString stringWithFormat:@"t%i.png",color]];
[sp spriteWithColor:color Row:row Column:column];