2011-05-08 66 views
1

我有一個暫停按鈕/方法(不是最好的,但它的工作原理)。目前,我正在改變屏幕上所有東西的不透明度,當它暫停時,這不是我想要做的,但它起作用(並且是一種痛苦)。有沒有人有更好的方法同時改變屏幕上的所有東西的亮度?更改屏幕上所有內容的顏色 - Cocos2d

E.G. 當你暫停「憤怒的小鳥」(只有我現在可以想到的遊戲)主場景上有一個透明的黑色覆蓋。

這裏是我的代碼

-(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」的色彩,最後一個數字是不透明度。

+0

將疊加在所有內容上並將它的動畫製作爲0.0到1.0的alpha並將其設置爲動畫效果並且只選擇白色?還是黑色? – 2011-05-08 16:31:13

+0

這是個不錯的主意,但CCLayerColor可以很好地工作,並且可以通過「colorLayer.visible = NO;」輕鬆隱藏。它也有改變不透明度的能力。 – Jonathan 2011-05-08 16:35:30

+0

啊,我看,很好。請將您的解決方案作爲答案發布,並在24小時內自行接受。 – 2011-05-08 16:43:18

回答

6

爲了把一個顏色疊加上一層只需添加的頂部..

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) 
+0

+1簡單而有效。關於這個技巧的一個很酷的事情是,你可以通過將一些精靈/節點放在CCLayerColor頂層的圖層中來排除一些精靈/節點的顏色。 – Lukman 2011-10-18 09:35:43