在Peeved Penguin中,如何向Seal对象添加属性

时间:2014-10-24 12:49:54

标签: objective-c class properties cocos2d-iphone spritebuilder

在过去的几周里,我一直在尝试在我的Mac上使用cocos。在这个过程中,我将我的mac带到Yosemite,拥有当前版本的XCode,以及最新版本的cocos,以及SpriteBuilder的相同版本。虽然是一位经验丰富的程序员,但我并不精通Objective-C。

我设法让Peeved Penguin项目工作,现在我正在尝试修改它。

我希望能够向对象添加属性和方法。以下是我在开发过程中所处的位置:

代码:

Seal.h

#import "CCSprite.h"

@interface Seal : CCSprite

@property int SealNbr;

- (void) TestHi;

@end

Seal.m

#import "Seal.h"

@implementation Seal

@synthesize SealNbr;

- (id)init
{
    self = [super init];
    if (self) {
        SealNbr = 4;
        CCLOG(@"Seal %i created", SealNbr);
//        CCLOG(@"Seal %@ created", self.initWithImageNamed);

        CCLOG(@"Seal-1 at %f, %f", self.position.x, self.position.y );
        self.position = ccp(450.f, 280.f);
        CCLOG(@"Seal-2 at %f, %f", self.position.x, self.position.y );

    }
    return self;
}

- (void) TestHi
{
    CCLOG(@"Hi to seal %i", SealNbr );
}
@end

的main.m

CCLOG(@"RunRace Loaded");

CCNode *_Seal =  [CCBReader load:@"Seal" ];
_Seal = [CCBReader load:@"Seal" ];

CCLOG(@"Name: %@", _Seal.name);
CCLOG(@"Seal at %f, %f", _Seal.position.x, _Seal.position.y );


// - A  _Seal.SealNbr = 5;
// - B  [_Seal TestHi ];

结果

2014-10-24 07:05:44.093 TrackTest2[22988:1782919] RunRace Loaded
2014-10-24 07:05:44.093 TrackTest2[22988:1782919] Seal 4 created
2014-10-24 07:05:44.094 TrackTest2[22988:1782919] Seal-1 at 0.000000, 0.000000
2014-10-24 07:05:44.094 TrackTest2[22988:1782919] Seal-2 at 450.000000, 280.000000
2014-10-24 07:05:44.139 TrackTest2[22988:1782919] Name: 
2014-10-24 07:05:44.140 TrackTest2[22988:1782919] Seal at 0.000000, 0.000000

请注意,未显示属性名称。我在SpriteBuilder时将Seals名称设置为“Frosty”。不知道如何让它工作。

当我尝试取消注释// @ A和// - B的行时,大问题发生了,这样我就可以访问属性SealNbr并使用方法TryHi,我收到错误消息:

错误讯息:

Property 'SealNbr' not found on object of type 'CCNode *'

Property 'TestHi' not found on object of type 'CCNode *'

这一行的另一个问题是如何在运行时更改图像文件而不是SpriteBuilder时间?

用英语怎么说,用户Aeisys在8月问了一个非常类似的问题,DrBeardface回答了这个问题。当我尝试在respose中提到的强制转换时,我会得到相同的错误,除非这次是在演员表上。

模式代码:

Seal *_Seal =  (Seal *)[CCBReader load:@"Seal" ];

错误:

Use of undeclared identifier 'Seal'

1 个答案:

答案 0 :(得分:0)

发现添加

“import seal.h”

main.m中的

解决了这个问题。

应该是显而易见的,但是,谁看到了明显的?

由于