0

CCLayer サブクラス (GameLayer) に存在する CCLabelTTF にアクセスしようとしていますが、別の Player クラス (CCLayer) からアクセスしたいと考えています。と思いました

[self getChildByTag: DEBUG_LABEL];

すべてのオブジェクトがツリー データ構造に格納されているため、シーンを検索し、それに一致するオブジェクトを見つけて、そのオブジェクトへのポインタを返します。

次のコードを使用して試行錯誤しながらラベルにアクセスできましたが、getChildByTag方法を理解していない場合や、以下のコードを使用せずにオブジェクトのシーンを検索する方法がある場合は、アドバイスをいただければ幸いです。

CCLabelTTF *lbl = (CCLabelTTF *)[[[[CCDirector sharedDirector] runningScene] getChildByTag: GAME_LAYER_TAG] getChildByTag: DEBUG_LABEL_TAG]; 

お知らせ下さい。

4

1 に答える 1

0

getChildByTagCCNodeそれを呼び出す親の直接の子のみをチェックします。子の子 (必要に応じて孫) はチェックしません。

たとえば、ノード階層が次のようになっているとします。

MyCCLayer1->MyCCLayer2->MyCCSprite->MyCCLabel

MyCCLayer1 を呼び出すと、呼び出しを介して MyCCLayer2 に直接アクセスすることしかできませんgetChildByTag。次に、MyCCLayer2 が呼び出しgetChildByTagて MyCCSprite を取得し、次に MyCCSprite を呼び出しgetChildByTagて MyCCLabel を取得できます。

于 2013-05-06T20:24:34.740 に答える