2011-12-15 128 views
0

我有兩個場景。場景A是遊戲場景,其中level類型變量int發生變化。在B類中,我想獲取變量。如何從另一個類訪問變量變量? (例如等級計數)

我現在得到的是以下內容:

-------------------------------- - LevelDone.m ---------------------------------

HelloWorldLayer *object = [[HelloWorldLayer alloc]init]; 

     int pointsForZeroStars = [[requiredPoints objectAtIndex:0] integerValue]; 
     int pointsForOneStar = [[requiredPoints objectAtIndex:1] integerValue]; 
     int pointsForTwoStars = [[requiredPoints objectAtIndex:2] integerValue]; 
     int pointsForThreeStars = [[requiredPoints objectAtIndex:3] integerValue]; 
     NSLog(@"HEALTH = %d",object.health); 
     CCSprite *levelDoneWindow;   
     if (object.health < pointsForZeroStars){ 
      NSLog(@"should be 0 stars"); 
      levelDoneWindow = [CCSprite spriteWithFile:@"leveldonescreen0stars.png"]; 
     } 

NSLog返回初始值health這是100,而實際上它是東西比100

較小的在遊戲中I類,以調用LevelDone現場撥打pushscene

----------------------------- HelloWorldLayer.m(遊戲場景)------------ -------------------------

else{ 

    [[CCDirector sharedDirector] pushScene:[LevelDone node]]; 
    [self generateLevelFromPlist:level]; 


} 

-generateFromPlist方法健康重置爲100,但它的NSLog方法後,肯定是叫在我的LevelDone.m類中,仍然打印出health爲100.

如何正確檢索此變量的值?

+0

什麼場景你在哪裏設置/更新的價值`健康?`錯誤不在這裏顯示的代碼中,但很可能在HelloWorldLayer類中。 – 2011-12-15 19:38:51

+0

聽起來很棒/不好!不應該`pushScene`方法暫停所有選擇器和方法?我有一個運行在1秒間隔的選擇器。但它只會減少健康。實際上,下面的方法`[self generateLevelFromPlist:level];`將它重新設置爲100。 – 2011-12-15 19:48:33

回答

0

您確定HelloWorldLayer的health屬性實際上是否正確更新?如果是這樣,我會懷疑(並且再一次猜測,因爲這個錯誤並沒有出現在提供的代碼本身中)你在HelloWorldLayer中改變的變量與你正在訪問的屬性不一樣與object.health - 也許範圍問題在這裏(即選擇器正在影響本地health變量,但不是實例變量本身)。

+0

如果我嘗試設置級別變量,它也不起作用。也許這只是一個可怕的循環,重新被調用,做了可怕的事情,我現在真的很絕望! – 2011-12-15 20:42:55