2011-09-14 3 views
0

현재 init 메소드에서 초기화하는 일련의 스프라이트 (cardA, cardB, cardC) 및 일련의 액션 (flipCardA, flipCardB, flipCardC)이 있습니다.Cocos2D : 다른 스프라이트에 대한 애니메이션 재사용

2 개의 불필요한 동작을 없애고 하나의 액션 flipCard 만 갖고 싶지만, "다른 스프라이트에 어떻게 동일한 동작을 적용 할 수 있습니까?"

(만 세 번째 카드에 작업을 적용합니다) 내가 가지고있는 시험 :

[self.cardA runAction:self.flipCardA]; 
[self.cardB runAction:self.flipCardB]; 
[self.cardC runAction:self.flipCardC]; 

감사 :

[self.cardA runAction:self.flipCard]; 
[self.cardB runAction:self.flipCard]; 
[self.cardC runAction:self.flipCard]; 

그래서 현재 그런 일을 사용해야합니다.

답변

1

여러 CCSprite에 대해 단일 CCAction을 동시에 사용할 수 없습니다. runAction은 CCAction의 target 속성을 runAction이 호출 된 클래스 객체로 설정하여 target의 이전 값을 무시합니다.

[self.flipCard copy]을 할 수도 있고하고있는 것처럼 계속 할 수도 있습니다. 또는 카드 클래스의 메서드 내에서 플립 애니메이션 구성 및 실행을 포함하는 것이 좋습니다 (예 : [self.cardA flipCard]). 그런 다음 대신 호출하십시오. 이제 플립 애니메이션의 명시적인 사본을 유지하는 것에 대해 걱정할 필요가 없습니다.

매번 플립 애니메이션을 재생성하는 비용은 무시할 만하지만 클래스 변수에서 생성 한 CCSequence를 반복적으로 사용하도록 유지할 수 있습니다.

+0

클래스 옵션 ([self.cardA flipCard])을 선택했습니다. 더 깨끗한 솔루션처럼 보였다. –

+0

탁월한 선택. –

관련 문제