Reputation: 31
I create sample game with 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
Method to init sprite:
MySprite *sp =[CCSprite spriteWith`ImageNamed:[NSString stringWithFormat:@"t%i.png",color]];`
[sp spriteWithColor:color Row:row Column:column];
And it alway show error: 2014-02-24 15:14:20.637 Bee[768:a0b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CCSprite spriteWithColor:Row:Column:]: unrecognized selector sent to instance 0x97da5a0'.
Please let me know what i do wrong and how to fix it.
Thanks all.
Upvotes: 0
Views: 482
Reputation: 22042
Your Mistake: You are creating object of CCSprite and assigning it to MySprite. Then you called methods in MySprite class through object of CCSprite. This leads in crash.
Do like this:
MySprite *sp =[MySprite spriteWithImageNamed:[NSString stringWithFormat:@"t%i.png",color]];
[sp spriteWithColor:color Row:row Column:column];
Upvotes: 2