2009-04-13 4 views
5

시간이 지남에 따라 '콜백'을 수행 할 수있는 사용자 지정 동작을 만드는 방법 (콜백에 대한 각 호출을 마지막 호출보다 점차 길어지게하는 방법) 이미적인 Cocos2D 구비 한 EaseExponentialOut 작용 유사한 이와 유사한Cocos2D-iphone 사용자 지정 여유 동작

예시 :. (작동하지 않는)

id sequence = [Sequence actions: [CallFunc actionWithTarget: self selector: @selector(spinTick)], [DelayTime actionWithDuration: 0.034f], nil]; 
id repeat = [Repeat actionWithAction: [sequence copy] times: 18]; 
id ease = [EaseExponentialOut actionWithAction: [repeat copy]]; 
[ease setDuration:4]; 

id play = [CallFunc actionWithTarget:self selector:@selector(play)]; 
[self runAction: [Sequence actions: [ease copy], [play copy], nil]]; 

상기 코드는 그 전체 '시퀀스'18 회를 실행하고 '재생을 수행 '마지막 순서의 끝에 콜백

그러나 EaseExponentialOut은 생성 된 '반복'작업에 전혀 영향을 미치지 않습니다. '시퀀스'작업 내에서 '지연 시간'작업의 지속 시간을 조정할 것으로 예상 했었지만 이것을하지 않는 것처럼 보입니다.

IntervalAction을 기반으로 내 자신의 맞춤 동작을 만들려고했지만 비참하게 실패했습니다.

+0

여기에 누락 된 것이 있습니까? spinTick 콜백은 SpinnerAction을 사용합니까? 애니메이션이 사용 된 것처럼 보이지 않습니다. 내가 본대로, 당신은 예상 된 easeexponentialout 기간과 함께 반복되는 spinTick 콜백 시퀀스를 가지고 있습니다. 회 전자는 샘플 코드에서 참조되지 않습니다 ... –

+0

SpinnerAction이 하단에 추가되었으므로 포함하지 않았습니다. –

+0

다시 보았을 때, '회 전자'는 실제로 위의 코드에서 사용 된 적이 없습니다. - 실패한 SpinnerAction 시도의 사례 일뿐입니다 (사실 이후 게시물 아래에 추가되었습니다). –

답변

2

분명히 위의 코드는 기능적이며, 기간 내에서 타이밍을 사용한 것입니다. 액션은 그대로 사용할 수 있으므로 'copy'를 사용할 필요도 없습니다.

타이밍을 0.034에서 0.25 라인으로 늘리면 그 결과가 내가보기를 원하는 결과에 가까워졌습니다. 이제는 '오케이'를 얻기 위해 기간 값으로 재생해야합니다.

+0

바운싱과 같은 것을 구현하려고합니다. 공. 당신은 저 특별한 것을 위해 안락 기능을 사용하는 방법 같이 그것을 실행하는데 저를 도울 것입니다. – rkb

+0

나는 그보다 더 많은 정보가 필요하며, 여러분이 질문을 모든 사람에게 올린다면 아마도 조금 더 나아질 것입니다. –