2014-02-24 73 views
0

我使用cocos創建示例遊戲2。 Mysprite.h:Cocos2d v3錯誤:發送到實例的無法識別的選擇器

#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年2月24日15:14 :20.637 Bee [768:a0b] *由於未捕獲異常'NSInvalidArgumentException'而終止應用程序,原因:' - [CCSprite spriteWithColor:Row:Column :]:無法識別的選擇器發送到實例0x97da5a0'。

請讓我知道我做錯了什麼,以及如何解決它。

謝謝大家。

回答

2

您的錯誤:您正在創建CCSprite的對象並將其分配給MySprite。然後你通過CCSprite的對象在MySprite類中調用方法。這導致崩潰。

這樣做:

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

謝謝你的回答,它幫助我很多。 – user3200622

相關問題