我正在使用 aCCSprite
和其他一些CCSprite
添加为子对象的对象,我正在使用的其他动画(缩放和旋转)效果很好,并且子对象也是动画的。但是当我使用时CCFadeOut
,它只会淡化父级。
我读过淡出不适用于孩子。除了遍历每个孩子并在每个孩子上调用淡出之外,还有其他方法吗?
我正在使用 aCCSprite
和其他一些CCSprite
添加为子对象的对象,我正在使用的其他动画(缩放和旋转)效果很好,并且子对象也是动画的。但是当我使用时CCFadeOut
,它只会淡化父级。
我读过淡出不适用于孩子。除了遍历每个孩子并在每个孩子上调用淡出之外,还有其他方法吗?
从 Cocos2d 版本开始。2.1,CCNodeRGBA 有一个“CascadeOpacity”BOOL 属性。在父 CCSprite 上将其设置为 YES 以淡出子节点以及父节点。
好吧,我猜你的选择是(从最简单到复杂排列):
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
的班级都有。所以,请务必记住这一点。
参考: