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 に答える