Cocos2d iphone 访问其他层上的信息
我有两层,游戏层和游戏层。Hud位于HelloWorldLayer的顶部 我有一个按钮,我按下它来重新加载hudlayer,它只是屏幕上显示的数字,用来捕捉游戏中的内容 buttonTapped:在HudLayer(在HelloWorldLayer之前)实现上声明 HudLayer和HelloWorldLayer位于同一个文件中,即HelloWorldLayer.m 我按下按钮,然后:Cocos2d iphone 访问其他层上的信息,cocos2d-iphone,Cocos2d Iphone,我有两层,游戏层和游戏层。Hud位于HelloWorldLayer的顶部 我有一个按钮,我按下它来重新加载hudlayer,它只是屏幕上显示的数字,用来捕捉游戏中的内容 buttonTapped:在HudLayer(在HelloWorldLayer之前)实现上声明 HudLayer和HelloWorldLayer位于同一个文件中,即HelloWorldLayer.m 我按下按钮,然后: - (void)buttonTapped:(id)sender { int n
- (void)buttonTapped:(id)sender
{
int number = 6;
//Heres the problem
//I dont know how to change this part...
[[HelloWorldLayer]->changedNumber = Number; ///How do I give changedNumber Number's value?????
_label.string = [NSString stringWithFormat:@"Number: %d",number];
}
HelloWorldLayer有一个属性:
@property (assign) int changedNumber;
听起来你的发件人是HelloWorldLayer 您可以尝试:
sender.changedNumber = Number;
试试这个:
CCArray* layers = [[CCDirector sharedDirector] runningScene].children;
for(int i=0; i<[layers count]; i++)
{
CCNode *node = [layers objectAtIndex:i];
if ([node isKindOfClass:[HelloWorldLayer class])
{
HelloWorldLayer *obj = (HelloWorldLayer*)node;
obj.changedNumber = Number;
break;
}
}
CCArray*layers=[[CCDirector sharedDirector]runningScene].children;
对于(int i=0;我尝试了这个,“Property”ammoLeft不在HelloWorldLayer类型的对象上”ammoLeft?在HelloWorldLayer中将其声明为Property。就像您对changedNumber所做的那样。很抱歉,changedNumber是“ammoLeft”,我只是在这个示例中对其进行了更改,以便每个人都能理解。因此基本上,“Property”changedNumber不在H类型的对象上这不可能,这是我第一个快速修复解决方案之一,如果你知道我的意思的话。