2012-05-07 6 views
1

이것은 cocos2d에 새로운 것이므로 이것은 아마도 학교 소년 문제 일 것입니다.cocos2d runAction in loop

나는 ccMenuItemImage가 가득한 ccMenu를 가지고 있으며, 페이드 아웃하기 위해 순서대로 각 메뉴 항목을 애니메이션으로 처리하려고합니다.

나는 모든 CCMenuItemImages와 배열이 있습니다

menuItems = [[NSArray alloc] initWithObjects:button1, button2, button3, nil]; 

을 그리고 난 배열을 통해 루프를 시도하고 각 버튼을 페이드 아웃 오전 :

이 작동하는 것 같다
CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5]; 

for (CCMenuItemImage *nextOne in menuItems) 
    [nextOne runAction:fadeToAlpha]; 

,하지만 것 배열의 마지막 CCMenuItemImage를 페이드 아웃합니다. 실제 CCMenu에서 작업을 수행 할 수 있지만 각 메뉴 항목에서 애니메이션을 하나씩 수행하려고합니다.

도움을 주시면 감사하겠습니다.

답변

0

당신은 당신의 일을 위해 CCSequence을 사용해야합니다 .... 대신에 다음과 같이 루프를 사용 CCSequence를 사용

..

[button1 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 2nd method, nil]]; 

두번째 방법

[button2 runAction:[CCSequence actions:fadeToAlpha,use CCCallFuncN to call 3nd method, nil]]; 

합니다.

.

.

.

다른 방법이 있습니다 .... 까다로운 ... 퇴색 시간은 0.5입니다. 구문

float duration = 0; 
for (CCMenuItemImage *nextOne in menuItems) 
{ 
    [nextOne runAction:[CCSequence actions:[CCDelayTime actionWithDuraion:duration],fadeToAlpha,nil]]; 

    value = value + 0.5; 

} 

확인 ... 다른 후 버튼 하나에 애니메이션을 적용 할 수 있습니다이 방법은 ... 희망이 도움이 .. :)

0

시도 : 또한

int index=0; 
for (CCMenuItemImage *nextOne in menuItems){ 
    CCFadeOut *fadeToAlpha = [CCFadeOut actionWithDuration:0.5]; 
    id fader = [CCSequence actions:[CCDelayTime actionWithDuration:index*.5], 
            fadeToAlpha,nil]; 
    [nextOne runAction:fader]; 
    index++; 
} 

이 같은을 사용하지 마십시오 여러 runActions가있는 작업 객체 인스턴스는 각 사용 인스턴스에 대해 새 작업을 만듭니다.