我对Spritebuilder如何与Xcode链接感到非常困惑。
我目前正在使用CCBloader“初始化”(?)我在Spritebuilder中创建的自定义类,但我无法访问我定义的属性。
在我的spritebuilder中,我有一个名为ContentPane的CCNode,它有这些嵌套的CCNode,名为_rockPath1和_rockPath2,两者都包含一个看起来像岩石的.png文件。
_rockPath1和_rockPath2都是所有者变量。
以下是ContentPane的样子: 头文件:
@interface ContentPane : CCNode
@property (nonatomic, assign) CCNode * _rockPath1;
@property (nonatomic, assign) CCNode * _rockPath2;
@end
.m文件:
@implementation ContentPane{
}
- (id)init {
self = [super init];
if (self) {
CCLOG(@"ContentPane created");
}
return self;
}
@end
这里是我在名为Gameplay.m的文件中初始化contentPane的地方:
- (void)didLoadFromCCB {
CCNode* pane = [CCBReader load: @"ContentPane"];
[self addChild:pane];
//HERE I TRY TO ACCESS THE PROPERTY _ROCKPATH1
pane._rockPath1.position = ccp(50,50);
}
它给出了错误“在CCNode类型的对象上找不到属性_rockPath1”
答案 0 :(得分:1)
这是因为就编译器而言,pane
只是一个CCNode
对象,CCNode
没有属性_rockPath1
。
您需要显式声明pane
作为您期望的类型,在本例中为ContentPane
,然后将+[CCBReader load:]
返回的对象强制转换为该类型:< / p>
- (void)didLoadFromCCB
{
ContentPane *pane = (ContentPane *)[CCBReader load: @"ContentPane"];
[self addChild:pane];
pane._rockPath1.position = ccp(50,50);
}