私はクラスオブジェクトを作成して返すクラスメソッドを持っています。 しかし、私は同じクラスのそのオブジェクトの特定のプロパティにアクセスしたいと思います。クラスメソッドであるので、私は変数を.hファイルで宣言することはできず、後で他のメソッドでそれにアクセスすることはできません。以下はコードです 以下のインスタンスメソッドでbackspriteまたはhudlayerオブジェクトの値にアクセスするにはどうすればいいですか?iPhoneおよびCocos2dのクラスタイプ(+)メソッドからオブジェクトにアクセスしますか?
// class 1
+(id)HUDWithBackgroundSprite:(NSString *)spriteName withRect:(CGRect)rect atPoistion:(HUDPosition)pos
{
HUDlayer *hud = [[HUDlayer alloc] init];
CCSprite *backSprite = [CCSprite spriteWithFile:spriteName];
[backSprite setContentSize:CGSizeMake(rect.size.width,rect.size.height)];
[backSprite setPosition:ccp(rect.origin.x,rect.origin.y)];
[backSprite setTag:100];
[hud addChild:backSprite];
[hud setTag:2];
return [hud autorelease];
}
// access it here
-(void)AddButtonToHUDWithImage:(NSString *)imageName selector:(SEL)selector withDisabledImage:(NSString *)disbdImageName
{
HUDlayer *hud = (HUDlayer *)[self getChildByTag:2];
CCMenuItem *menuItem1 = [CCMenuItemImage itemFromNormalImage:imageName selectedImage:imageName disabledImage:disbdImageName target:self selector:@selector(selector)];
CCMenu *menu = [CCMenu menuWithItems:menuItem1,nil];
CCSprite *sprite = (CCSprite *)[hud getChildByTag:100];
CGPoint pos = sprite.position;
//pos =[[CCDirector sharedDirector]convertToGL:pos];
[menu setPosition:ccp(pos.x+160,pos.y-30)];
[hud addChild:menu];
}
// class 2
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
HUDlayer *hud = [HUDlayer node];
// [scene addChild:hud z:1];
// 'layer' is an autorelease object.
HelloWorldLayer *layer = [[[HelloWorldLayer alloc]initWithHUD:hud]autorelease];
// add layer as a child to scene
[scene addChild: layer];
id mainHuds = [HUDlayer HUDWithBackgroundSprite:HUDBackground withRect:CGRectMake(160,450, 300,60) atPoistion:pos_Top];
SEL callOnClick;
[mainHuds AddButtonToHUDWithImage:ButtonBackground selector:callOnClick withDisabledImage:disabledBackground];
[scene addChild: mainHuds];
// return the scene
return scene;
}
私は+方式でHUDlayerオブジェクトがここに追加されていないかのように、タグを使用してますがメソッドを呼び出して、他のクラスでそれにアクセスすることはできませんよ。
私はあなたがあなたの.hファイルでそれを宣言できないのですか?アクセスする唯一の方法は、変数が.hファイル内にある場合です。 – xuanweng
これはクラスメソッドではアクセスされないインスタンス変数です。インスタンスメソッド – hemant