2012-07-25 33 views
1

我增加了兩個CCMenuItemImage對象的CCMenuItemToggle像這樣:CCMenuItems寬鬆標籤

CCMenuItemImage *soundEnabled = [CCMenuItemImage itemWithNormalImage:@"button_sound_enabled.png" 
                 selectedImage:@"button_sound_enabled.png"]; 
soundEnabled.tag = kSoundEnabled; 

CCMenuItemImage *soundDisabled = [CCMenuItemImage itemWithNormalImage:@"button_sound_disabled.png" 
                 selectedImage:@"button_sound_disabled.png"]; 
soundDisabled .tag = kSoundDisabled; 

CCMenuItemToggle *sound = [CCMenuItemToggle itemWithItems:[NSArray arrayWithObjects:soundEnabled,soundDisabled,nil] block:^(id sender) { 
    CCMenuItem *item= ((CCMenuItemToggle*).sender).selectedItem; 
    CCLog(@"item tag: %d",item.tag); 
}]; 

kSoundEnabledkSoundDisabled與值2和3列舉的項目當我每次登錄CCMenuItemImage的標籤我創建之後他們,一切都很好。但是當我將它們記錄在塊中時,標籤顯示爲-1061138431。

另外,當我嘗試在塊的外部記錄它們時,只是在我的圖層的init代碼中更進一步,它們開始出現錯誤。

有人知道問題在這裏嗎?這是一個支持Kobold2d ARC的項目,ARC可能是這個問題嗎?我認爲這不會解釋像NSInteger這樣簡單的數據類型?

我知道我可以檢查sender.selectedIndex = 0sender.selectedIndex = 1但我仍然想知道這裏有什麼問題。

回答

3

該問題不是來自ARC配置或其他問題。我用Cocos2D 2.0測試了它,並且遇到同樣的問題。我檢查了源代碼,問題來自CCMenuItemToggle,它改變了孩子的標籤以保持當前顯示項目的軌跡。

我要你用你的變量的引用到您的塊這樣的:

CCMenuItemToggle *sound = [CCMenuItemToggle itemWithItems:[NSArray arrayWithObjects:soundEnabled,soundDisabled,nil] block:^(id sender) 
{ 
    CCMenuItem *item= ((CCMenuItemToggle*).sender).selectedItem; 
    if (item == soundEnabled) 
    { 
    //... 
    } else 
    { 
    //... 
    } 
}]; 
+1

我犯了一個關於這個問題的修復。 ;) – 2012-07-26 13:35:03