我使用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'。
请让我知道我做错了什么以及如何解决它。
谢谢大家。
答案 0 :(得分:2)
您的错误:您正在创建CCSprite的对象并将其分配给MySprite。然后通过CCSprite对象调用MySprite类中的方法。这导致崩溃。
这样做:
MySprite *sp =[MySprite spriteWithImageNamed:[NSString stringWithFormat:@"t%i.png",color]];
[sp spriteWithColor:color Row:row Column:column];