Gamehud
オブジェクトの名前を表示したい場所があります。メインシーンにはたくさんのオブジェクト/スプライトがあります。私がやろうとしているのは、選択した(タッチした)オブジェクトの名前をに表示することですGamehud
。
問題はGamehud
、CCsprite
クラスに割り当てると、新しいインスタンスが作成され、現在のインスタンスが更新されないことGamehud
です。何も起こらないようなものを使用するとGameHUD *gamehud= (GameHUD *)[self.parent getChildByTag:99];
、オブジェクトをGameHudクラスに送信できません。
ccsprite or ccnode
では、クラスでゲームのハッドを更新する正しい方法は何でしょうか?
メインシーン;
-(id) init
{
if ((self = [super init]))
{
gameHud = [GameHUD gamehud];
[self addChild:gameHud z:2 tag:99];
}
}
私のGameHud
+(id) gamehud
{
return [[self alloc] init];
}
-(id) init
{
if ((self = [super init]))
{
//bunch of labels
}
}
-(void)showName: :(Object *)obj
{
NSLog(@"Object name is %@", obj.name);
[_labelSpeed setString:obj.name];
}
オブジェクトクラス内:CCSprite
-(void) onTouch
{
//obj is the object with name property that I want to use
GameHUD *gamehud= (GameHUD *)[self.parent getChildByTag:99]; // does not send the obj to gamehud and showName is not called
//GameHud *gamehud= [GameHud alloc] init]; // this displays nslog but doesnt update _label
[gamehud showName:obj];
}