1

我有一个 CCScene,它已经保存了我的 gameLayer,我正在尝试在其上添加 HUD 层。但是 HUD 层没有添加到我的场景中,我可以这么说,因为我已经在 HUD 层上设置了 CCLabel,当我运行时我的项目,我看不到那个标签。

这就是我正在做的事情:在我的gameLayer中:

+(id) scene
{

   CCScene *scene = [CCScene node];

   GameScreen *layer = [GameScreen node];
   [scene addChild: layer];

    HUDclass * otherLayer = [HUDclass node];
    [scene addChild:otherLayer];

    layer.HC = otherLayer;// HC is reference to my HUD layer in @Interface of gameLayer
    return scene;
}

然后在我的 HUD 层中,我刚刚在它的 init 方法中添加了一个 CCLabelTTF,如下所示:

-(id)init {

    if ((self = [super init])) {

    CCLabelTTF * label = [CCLabelTTF labelWithString:@"IN WEAPON CLASS" fontName:@"Arial"    fontSize:15];
     label.position = ccp(240,160);
     [self addChild:label];

    }

    return  self;
}

但是现在当我运行我的项目时,我看不到那个标签,我在这里做错了什么......?

也没有调用 HUD 层中的 init 方法。

有任何想法吗.. ?

在此先感谢您的时间。

4

1 回答 1

2

我猜 [Hudclass node] 没有调用你的类的 init 方法,而只是调用 CCNode 的 init 方法。您可以通过在该行设置断点并进入节点方法来验证这一点。

两种解决方案:

  • 覆盖 HUD 类中的 +(id)node
  • 使用 [[[HUDclass alloc] init] autorelease] 创建层
于 2012-08-02T13:07:40.353 回答