我正在使用CCSprite
與其他一些CCSprite
對象添加爲兒童,我使用的其他動畫(縮放和旋轉)效果很好,孩子們也動畫。但是當我使用CCFadeOut
時,它只會淡化父母。CCSprite與兒童淡出
我讀過那個淡出不適用於孩子。除了迭代每個孩子並在每個孩子上調用淡出方法之外,還有什麼方法嗎?
我正在使用CCSprite
與其他一些CCSprite
對象添加爲兒童,我使用的其他動畫(縮放和旋轉)效果很好,孩子們也動畫。但是當我使用CCFadeOut
時,它只會淡化父母。CCSprite與兒童淡出
我讀過那個淡出不適用於孩子。除了迭代每個孩子並在每個孩子上調用淡出方法之外,還有什麼方法嗎?
好過時,我猜你的選擇是(排名從簡單到複雜):
1)剛進入CCSprite
類cocos2d
庫,並破解它。 (< 3開源)。 (不建議)。
-(void) setOpacity:(GLubyte) anOpacity
{
opacity_ = anOpacity;
// special opacity for premultiplied textures
if(opacityModifyRGB_)
[self setColor: colorUnmodified_];
[self updateColor];
for (id<CCRGBAProtocol> child in children) {
// You should check if child responds to selector or conforms to CCRGBAProtocol.
[child setOpacity:opacity];
}
}
2)同上述方案中,除了子類CCSprite
到MyCCSprite
,並從它,而不是繼承CCSprite
。最後,在新的類中重寫setOpacity:
:
- (void) setOpacity:(GLubyte)opacity
{
[super setOpacity:opacity];
for(id<CCRGBAProtocol> child in children) {
[child setOpacity:opacity];
}
}
3)通過遍歷他們的父運行CCFade
行動和孩子。 (傻,如果你問我)。
重要:只是請,請,請記住,opacity
是CCRGBAProtocol
的屬性。並非所有的CCNode
類都有。所以,請記住這一點。
參考文獻:
隨着cocos2d的版本的。 2.1,CCNodeRGBA具有「CascadeOpacity」BOOL屬性。在父CCSprite上將其設置爲YES以淡出子節點以及父節點。
是的,因爲'FadeOut'實際上改變了'opacity',所以當這個屬性改變時,效果不會傳播給孩子...... – Mazyod