Cocos2d iphone 访问其他层上的信息

Cocos2d iphone 访问其他层上的信息,cocos2d-iphone,Cocos2d Iphone,我有两层,游戏层和游戏层。Hud位于HelloWorldLayer的顶部 我有一个按钮,我按下它来重新加载hudlayer,它只是屏幕上显示的数字,用来捕捉游戏中的内容 buttonTapped:在HudLayer(在HelloWorldLayer之前)实现上声明 HudLayer和HelloWorldLayer位于同一个文件中,即HelloWorldLayer.m 我按下按钮,然后: - (void)buttonTapped:(id)sender { int n

我有两层,游戏层和游戏层。Hud位于HelloWorldLayer的顶部

我有一个按钮,我按下它来重新加载hudlayer,它只是屏幕上显示的数字,用来捕捉游戏中的内容

buttonTapped:在HudLayer(在HelloWorldLayer之前)实现上声明

HudLayer和HelloWorldLayer位于同一个文件中,即HelloWorldLayer.m

我按下按钮,然后:

    - (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类型的对象上这不可能,这是我第一个快速修复解决方案之一,如果你知道我的意思的话。