1

我最近开始学习 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的警告

非常感谢,如果问题的字体或格式不是超级整洁,我们深表歉意。

4

1 回答 1

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];
于 2012-10-15T10:28:54.463 回答