在Xcode中访问其类之外的spritebuilder对象的属性?

时间:2014-08-18 03:16:39

标签: objective-c xcode inheritance properties spritebuilder

我对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”

1 个答案:

答案 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);
}