如何更改Cocos2d MenuItem的颜色?

时间:2009-02-17 19:10:24

标签: iphone objective-c cocos2d-iphone

[MenuItemFont setFontSize:20];
[MenuItemFont setFontName:@"Helvetica"];
//I'm trying to change the color of start (below item)
MenuItem *start = [MenuItemFont itemFromString:@"Start Game" 
                                        target:self 
                                      selector:@selector(startGame:)];
MenuItem *help = [MenuItemFont itemFromString:@"Help"
                                       target:self 
                                     selector:@selector(help:)];
Menu *startMenu = [Menu menuWithItems:start, help, nil];
[startMenu alignItemsVertically];
[self add:startMenu];

3 个答案:

答案 0 :(得分:5)

MenuItemFont *start =  [MenuItemFont itemFromString:@"Start Game" 
                                             target:self 
                                           selector:@selector(startGame:)];

[start.label setRGB:0 :0 :0]; // Black menu item

Label是MenuItemFont的一个属性,是MenuItem的子类,因此在隐式转换为MenuItem时会丢失它。

或者,您可以这样做:

[((MenuItemFont *)start).label setRGB:0 :0 :0] 

(但这很丑陋,而startMenu将采用一个没有投诉的MenuItemFont。)

请记住,MenuItemFont中的颜色大部分是硬编码的,因此调用'setIsEnabled'会将颜色设置为灰色或白色。这发生在MenuItem.m的第239行附近,如果你需要调整它。如果我开始制作补丁以在MenuItemFont上公开这个功能(假设它还没有在.7.1之前的源代码中),我将更新我的帖子。

答案 1 :(得分:4)

setRGB已在较新版本中设置为setColor。例如:

[start.label setColor: ccc3(200,0,200)];

答案 2 :(得分:3)

您可以像这样更改它(至少在Cocos2d版本0.99.5上)

CCMenuItemFont *startMenuItem = [CCMenuItemFont itemFromString:@"Start" target:self selector:@selector(startTapped:)];
[startMenuItem setColor:ccBLACK];