我最近开始学习Objective-C和Cocos-2D。我试图定义自己的方法来自动创建精灵。
我添加了自己的类,我也将创建其他自动化方法。无论如何我的.h文件看起来像这样:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface ActionsClass : CCNode {
}
@property (nonatomic, strong) CCSprite* createSprite;
@property (nonatomic, strong) CCSprite* spriteName;
@property (nonatomic, strong) NSString* pngName;
@property (nonatomic) CGPoint* spriteCoordinate;
- (CCSprite *)createSprite: (CCSprite *)spriteName: (NSString *)pngName: (CGPoint *)spriteCoordinate;
@end
而.m是:
#import "ActionsClass.h"
@implementation ActionsClass
@synthesize createSprite = _createSprite;
@synthesize spriteName = _spriteName;
@synthesize pngName = _pngName;
@synthesize spriteCoordinate = _spriteCoordinate;
- (CCSprite *)createSprite: (CCSprite *)spriteName: (NSString *)pngName: (CGPoint *)spriteCoordinate
{
if (!_createSprite)
{
_createSprite = [[CCSprite alloc] init];
_spriteName = [CCSprite spriteWithFile:_pngName];
_spriteName.position = ccp(_spriteCoordinate->x, _spriteCoordinate->y);
[self addChild:_spriteName];
}
return _createSprite;
}
@end
在我要调用方法的主.m文件中:
[self createSprite: saif: @"saif.png": ccp(100,100)];
这会发出警告,xcode没有找到实例方法 createSprite 并将其默认为 id
非常感谢,如果问题的字体或格式不是很整洁,那就很抱歉。
答案 0 :(得分:1)
您的方法声明错误,因此您无法调用它。
应该是:
- (CCSprite *)createSprite:(CCSprite *)spriteName pngName:(NSString *)pngName coord:(CGPoint *)spriteCoordinate;
并称之为:
[self createSprite:someSprite pngName:somePNGName coord:someCoord];
编辑:我没有看到你试图从另一个班级调用它。为此,您需要导入ActionsClass头文件,并在ActionsClass的实例上调用此方法,例如
ActionsClass *actionsClassObject = [[ActionsClass alloc] init];
[actionsClassObject createSprite:someSprite pngName:somePNGName coord:someCoord];