Изменить цвет всего на экране - Cocos2d

У меня есть кнопка/метод паузы (не самый лучший, но работает). В настоящее время я меняю непрозрачность ВСЕГО на экране, когда он приостановлен, что не то, что я хочу делать, но это работает (и это боль). У кого-нибудь есть лучший способ изменить яркость всего на экране одновременно?

НАПРИМЕР. когда вы ставите на паузу «Angry Birds» (единственная игра, о которой я мог думать в данный момент), на основной сцене появляется прозрачное черное наложение.

Вот мой код

-(void) Pause:(ccTime)delta
{
    Bag.opacity = 150;
    ScoreH.opacity = 150;
    TimerH.opacity = 150;
    leftB.opacity = 150;
    rightB.opacity = 150;
    bg.opacity = 150;
    scoreLabel.opacity = 150;
    timeLabel.opacity = 150;

    [[CCDirector sharedDirector] pause];

    CCLOG(@"Game Paused");
}

Кроме того, большинство моих спрайтов берутся из листов спрайтов. Я не знаю, поможет ли это. Любая помощь приветствуется. Заранее спасибо!

Вау... Я искал ответ на этот вопрос около месяца, и СРАЗУ после того, как я задал этот вопрос, я решил поискать его снова и... я нашел его.

Прошу простить мою глупость...

CCLayerColor* colorLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 100)];
[self addChild:colorLayer z:0];

Первые три числа обозначают цвета «RBG», а последнее число — непрозрачность.


person Jonathan    schedule 08.05.2011    source источник
comment
Разве не было бы достаточно наложить на все наложение и анимировать его альфа-канал от 0,0 до 1,0 и просто выбрать белый цвет? Или черный?   -  person Nick Weaver    schedule 08.05.2011
comment
Это хорошая идея, но CCLayerColor отлично работает и может быть легко скрыт с помощью colorLayer.visible = NO;. Он также имеет возможность изменить непрозрачность.   -  person Jonathan    schedule 08.05.2011
comment
А, вижу, очень хорошо. Пожалуйста, опубликуйте свое решение в качестве ответа и примите его для себя в течение 24 часов.   -  person Nick Weaver    schedule 08.05.2011
comment
Я буду. Спасибо за быстрый ответ в начале   -  person Jonathan    schedule 08.05.2011


Ответы (1)


Чтобы поместить наложение цвета поверх слоя, просто добавьте ..

CCLayerColor* colorLayer = [CCLayerColor layerWithColor:ccc4(0, 0, 0, 128)];
[self addChild:colorLayer z:0];

Первые три числа обозначают цвета «RGB», а последнее число — непрозрачность. Каждый может иметь значение в диапазоне от 0 до 255.

E.G.

layerWithColor:ccc4(Red, Green, Blue, Opacity)
person Jonathan    schedule 09.05.2011
comment
+1 Просто, но эффективно. Одна интересная вещь в этом трюке заключается в том, что вы можете исключить некоторые спрайты/узлы из получения цветового оттенка, поместив их в слой, который находится поверх CCLayerColor. - person Lukman; 18.10.2011