首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Penguin中,如何向Seal对象添加属性

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

Stack Overflow用户
提问于 2014-10-24 20:49:54
回答 1查看 40关注 0票数 0

在过去的几周里,我一直在尝试在我的Mac上使用cocos。在此过程中,我将我的mac升级到了Yosemite,安装了最新版本的XCode,最新版本的cocos,以及SpriteBuilder的最新版本。虽然我是一名经验丰富的程序员,但我并不精通Objective-C。

我已经设法让愤怒的企鹅项目工作,现在正在尝试修改它。

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

代码:

Seal.h

代码语言:javascript
复制
#import "CCSprite.h"

@interface Seal : CCSprite

@property int SealNbr;

- (void) TestHi;

@end

Seal.m

代码语言:javascript
复制
#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

代码语言:javascript
复制
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 ];

结果

代码语言:javascript
复制
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的时候把海豹的名字设为“冰霜”。不知道怎么才能让它工作。

当我尝试取消标记为// -A和// - B的行的注释,以便可以访问属性SealNbr并使用TryHi方法时,会出现一个大问题,我得到了错误消息:

错误消息:

代码语言:javascript
复制
Property 'SealNbr' not found on object of type 'CCNode *'

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

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

顺便说一句,用户Aeisys在8月份问了一个非常类似的问题,DrBeardface回答了这个问题。当我尝试respose中提到的强制转换时,我得到了相同的错误,除了这次是在强制转换上。

修改后的代码:

代码语言:javascript
复制
Seal *_Seal =  (Seal *)[CCBReader load:@"Seal" ];

错误:

代码语言:javascript
复制
Use of undeclared identifier 'Seal'
EN

回答 1

Stack Overflow用户

发布于 2014-10-24 21:21:51

发现添加

“导入seal.h”

在main.m中解决了这个问题。

这应该是显而易见的,但是,谁会看到显而易见的事情呢?

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26548233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档