2012-05-14 5 views
0

게임에 등장 인물이 있고 그 클래스가 이와 같다고 가정 해 봅시다.레이어에서 애니메이션 스프라이트 프레임을 제거 하시겠습니까?

 

@interface Player 
{ 
    CCSprite* stand; 
    CCAnimation* run; 
} 

-(void) playRunAction 
{ 
    // Create CCAnimate* object from CCAnimation object (run) 

    [self runAction:runAniate]; 
} 

-(void) playStandAction 
{ 
    stand.visible = YES; 
    [self stopAllActions]; 
} 
 

플레이어는 서거나 달릴 수 있습니다.

하지만 하나의 문제는 playStandAction이 호출 된 후 스탠드 애니메이션이 표시되고 실행중인 애니메이션이 중지되었지만 실행중인 애니메이션의 한 프레임이 그대로 남아 있다는 것입니다. ('stand sprite'와 'running an animation frame'이 함께 표시됩니다.)

애니메이션을 보이지 않게하려면 어떻게합니까?

P.s 누구나 나를 한 캐릭터로 더 잘 관리 할 수 ​​있습니까? 이것은 애니메이션이 추가됨에 따라 완전히 재앙입니다.

답변

0
-(void) playStandAction 
{ 
//Make the animation object.visible = NO; here 
    stand.visible = YES; 
    [self stopAllActions]; 
} 

및 매개 변수 restoreOriginalFrame

-(void) playRunAction 
{ 
    // Create CCAnimate* object from CCAnimation object (run) 
    //Make the animation object.visible = YES; here 
    stand.visible = NO; 
    [self runAction:runAniate]; 
} 
+0

팁 주셔서 감사. 이런 종류의 작품. – SeniorLee

0

사용 방법 및 합격이 yes

당신이 CCAnimate 객체를 생성하기위한 호출하는 방법을 모르겠어요

...

좋아요 :

[CCAnimate actionWithAnimation:animation restoreOriginalFrame:YES]]; 

레이어에서 runAction을 호출하지 마십시오. 나는 ... 당신이 스프라이트 자체에 runAction이 도움이

당신은 숨기고이 다른 개체를 표시 할 필요가 없습니다 ...

희망을 선호 할 것입니다. :)

+0

네, 플레이어 클래스 정의 옆에 ': CCSprite'를 넣는 것을 잊어 버렸습니다. 팁 고마워. 나는 restoreOriginalFrame이 있는지 몰랐다. 하지만 애니메이션 실행 중에 스탠드 메서드를 호출하면 어떻게 될까요? 또는 애니메이션을 반복적으로 영원히 만들 수 있습니까? – SeniorLee

+0

나는 원래 프레임을 되 찾을 것임을 아직도 생각한다. 그냥 메서드를 호출하여 한 번 교차 체크 ... –

관련 문제