Как мне изменить цвет Cocos2d MenuItem? - PullRequest
6 голосов
/ 17 февраля 2009
[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 ]

5 голосов
/ 15 марта 2009
MenuItemFont *start =  [MenuItemFont itemFromString:@"Start Game" 
                                             target:self 
                                           selector:@selector(startGame:)];

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

Метка является свойством MenuItemFont, подкласса MenuItem, поэтому вы теряете его во время неявного приведения к MenuItem.

В качестве альтернативы вы можете сделать:

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

(но это уродливо, и startMenu примет MenuItemFont без нареканий).

Имейте в виду, что цвета по большей части жестко закодированы в MenuItemFont, поэтому вызов 'setIsEnabled' вернет цвета к серому или белому. Это происходит в строке 239 MenuItem.m, если вам нужно настроить его. Если мне удастся создать патч для раскрытия этой функциональности в MenuItemFont (при условии, что его нет в исходных кодах до версии 7.1), я обновлю свой пост.

4 голосов
/ 06 апреля 2011

setRGB был установлен на setColor в более новых версиях. Например:

[start.label setColor: ccc3(200,0,200)];
3 голосов
/ 06 февраля 2011

Вы можете изменить это так (по крайней мере, на Cocos2d версии 0.99.5)

CCMenuItemFont *startMenuItem = [CCMenuItemFont itemFromString:@"Start" target:self selector:@selector(startTapped:)];
[startMenuItem setColor:ccBLACK];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...