다른 CCSprite
오브젝트를 어린이로 추가 한 CCSprite
오브젝트를 사용하고 있으며, 다른 애니메이션 (스케일 및 회전)이 훌륭하게 작동하고 아이들도 움직입니다. 하지만 CCFadeOut
을 사용하고있을 때는 부모 만 사라집니다.CCSprite 아이들과 함께 페이드 아웃
나는 아이들에게 페이드 아웃이 적용되지 않는다고 읽었습니다. 모든 어린이를 반복하고 각각의 페이드 아웃을 호출하는 것 이외의 다른 방법이 있습니까?
다른 CCSprite
오브젝트를 어린이로 추가 한 CCSprite
오브젝트를 사용하고 있으며, 다른 애니메이션 (스케일 및 회전)이 훌륭하게 작동하고 아이들도 움직입니다. 하지만 CCFadeOut
을 사용하고있을 때는 부모 만 사라집니다.CCSprite 아이들과 함께 페이드 아웃
나는 아이들에게 페이드 아웃이 적용되지 않는다고 읽었습니다. 모든 어린이를 반복하고 각각의 페이드 아웃을 호출하는 것 이외의 다른 방법이 있습니까?
은이 답변이 Gregory Johnson Answer
자에 의해 사용되지 않는 렌더링, 당신의 선택은 (간단한에서 복잡한 위)하는 것 같아요 :
1) 그냥 cocos2d
라이브러리에 CCSprite
클래스로 이동하고, 해킹 해. (< 3 오픈 소스). (권장하지 않음). MyCCSprite
에 서브 CCSprite
제외한 상기 용액 동일
-(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
상속. 마지막으로, 새 클래스에 setOpacity:
를 오버라이드 (override) :
- (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'이 실제로'불투명도 '를 변경하므로이 속성을 변경하면 효과가 하위에 전파되지 않습니다. – Mazyod