启用/禁用阵列中的CCButton

时间:2014-09-12 05:38:56

标签: objective-c arrays cocos2d-iphone

我正在使用Cocos2D构建一个20级的益智游戏。当玩家首次打开游戏时,除了等级1之外,所有等级都应该被锁定。当玩家通过等级1时,应该启用等级2按钮等等......

我将CCButtons放在一个数组中,以便我可以在for循环中禁用未锁定的级别按钮(而不是每个单独的),但启用/禁用数组中的对象引用不起作用...

例如,这有效:_level19.enabled = false;

但这不起作用:levels[19].enabled = false;

以下是我将CCButton* _level1初始化为CCButton* _level20后的相关代码块。

-(void) didLoadFromCCB {

    // Only set level buttons as enabled if player has unlocked that level

    CCButton* levels[20] = {_level1, _level2, _level3, _level4, _level5, _level6, _level7, _level8, _level9,
    _level11, _level12, _level13, _level14, _level15, _level16, _level17, _level18, _level19, _level20};

    // CCButtons are automatically enabled so disable all buttons that haven't been unlocked

    for (NSInteger j = [GameState sharedInstance].levelsUnlocked; j > 20; j++) {
        levels[j].enabled = false;
    }
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

j> 20似乎是一个错字。只有当j值大于20时,才想进入循环,然后从计数20的levels数组中获取一个值,这将导致超出范围的异常。

我猜,这应该对你有用

 for (NSInteger j = [GameState sharedInstance].levelsUnlocked; j < 20; j++) {
    levels[j].enabled = false;
}