更改不同图层中标签的标签颜色

时间:2014-06-03 22:05:59

标签: ios objective-c colors cocos2d-iphone

所以我有一个名为MainScene的场景,其中CCScrollView UpgradesScroller包含名为UpgradesNew的图层。我有一个按钮,当点击MainScene时,应将hasItem布尔值设置为YES,然后取消隐藏图层UpgradesNew时,应根据布尔值的输出。

这是我尝试过的。

hasItem设为true:

-(void) buyItem {
        hasItem = true;
    }
}

MainScene中,这是取消隐藏UpgradesNew时使用的方法。

-(void)Upgrades {
    UpgradesNew *upNew = [[UpgradesNew alloc]init];
    [upNew changeColor];
    if (upgradesScroller.visible == NO) {
        upgradesScroller.visible = YES;
    } else if (upgradesScroller.visible == YES) {
        upgradesScroller.visible = NO;
    }
}

UpgradesNew

-(void)changeColor {
    if (hasItem == true) {
        label.color = [CCColor greenColor];
        NSLog(@"changecolor");
    }
}

我认为问题是因为我正在分配UpgradesNew的空实例。但我不确定如何以正确的方式做到这一点。

1 个答案:

答案 0 :(得分:1)

问题有点混乱,信息有点不完整,但我只能假设问题在这里:

UpgradesNew *upNew = [[UpgradesNew alloc]init];

我猜UpgradesNew是某种视图或视图控制器,您已经实例化并在屏幕上显示。当您致电[[UpgradesNew alloc] init];时,您正在创建一个新对象。您需要的是对您打算更改的当前现有UpgradesNew对象的引用。您需要在此现有对象上调用changeColor方法,而不是创建新方法。

编辑:如果你想获得有关如何获得正确对象的引用的帮助,你需要在问题中提供更多细节 - 正如所写的那样,这些对象之间的关系没有太多暗示。