2013-05-08 135 views
1

我有两层,游戏和hudlayer。 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; 
+0

http://www.koboldtouch.com/display/IDCAR/Strategies+for+Accessing+Other+Nodes – LearnCocos2D 2013-05-08 21:20:32

回答

0

听起来像是你的发件人是HelloWorldLayer。

你可以试试:

sender.changedNumber = Number; 
+0

这可以不会的,如果你知道我的意思,这是我的第一个quickfix解决方案之一。 – user1876553 2013-05-08 19:24:57

0

试试这个:

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; 
    } 
} 
+0

我试过这个,'Property _ammoLeft not on object of type HelloWorldLayer' – user1876553 2013-05-08 19:24:30

+0

_ammoLeft?将其声明为HelloWorldLayer中的属性。就像你为changedNumber做的一样。 – Guru 2013-05-09 04:21:07

+0

对不起,changedNumber IS _ammoLeft,我只是改变它在这个例子上,这对每个人都是可以理解的。 所以基本上'属性_changedNumber不是类型HelloWorldLayer的对象' – user1876553 2013-05-09 13:52:07