1

すでにgameLayerを保持しているCCSceneがあり、その上に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ノード]がクラスのinitメソッドを呼び出しているのではなく、CCNodeのinitメソッドのみを呼び出していると思います。その行にブレークポイントを設定し、ノードメソッドにステップインすることで、これを確認できます。

2つの解決策:

  • HUDclassの+(id)nodeをオーバーライドします
  • [[[HUDclass alloc]init]autorelease]を使用してレイヤーを作成します
于 2012-08-02T13:07:40.353 に答える