在cocos2d的游戲設置見面中,要添加控制聲音開關的按鈕,我的button使用CCMenuItemSprite來時顯得,當開啟聲音時候,顯示A圖片,關閉時候顯示B圖片,這就需要修改CCMenuItemSprite的圖片,方法如下:
在創建menu的時候,這只一種圖片
[cpp]
CCSprite* audion= [CCSprite spriteWithSpriteFrameName:@"button_audio.png"];
CCSprite*audios= [CCSprite spriteWithSpriteFrameName:@"button_audio.png"];
CCMenuItemSprite* audiosa=[CCMenuItemSprite itemFromNormalSprite:audion selectedSprite:audios target:self selector:@selector(audio:)];
-----
注意,在創建CCMenuItemSprite的時候,必須創建你兩個CCSprite,否則會出現一下錯誤:
[cpp]
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'child already added. It can't be added again'
----
點擊按鈕,會觸發 audio:函數,此函數定義如下:
[cpp]
-(void)audio:(id)sender{
NSLog(@"send:%@",sender);
CCMenuItemSprite* i=(CCMenuItemSprite*)sender;
CCSprite* audion= [CCSprite spriteWithSpriteFrameName:@"button_audio_bar.png"];
CCSprite* audios= [CCSprite spriteWithSpriteFrameName:@"button_audio_bar.png"];
i.normalImage = audion;
i.selectedImage=audios;
}
這裡我們拿到的sender是CCMenuItemSprite,轉換後可以設置其normalImage,selectedImage來實現圖片的修改。
其實normalImage並不是嚴格意義上的圖片,而是 CCNode<CCRGBAProtocol>的子類,所以我們可以將其設置為CCSprite。