在过去的几周里,我一直在尝试在我的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'
答案 0 :(得分:0)
发现添加
“import seal.h”
main.m中的解决了这个问题。
应该是显而易见的,但是,谁看到了明显的?
由于