2013-05-08 162 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