2013-02-01 2 views
1

나는 각 차가 경로에서 달리는 자동차 경주 게임에 종사하고있다. 경주가 시간 기반이기 때문에 나는 repeatCount를 버그 값으로 설정했습니다. 이제 문제는 경기가 끝났을 때 얼마나 많은 바퀴가 완료되었는지 (다른 단어는 애니메이션이 반복되는 횟수) 표시 할 수 없다는 것입니다. 나는 자동차의 프레임을위한 CGIntersectRect를 사용하려고 시도했다.repeatCount가 huge_val 일 때 애니메이션 (CAKeyFrameAnimation)의 반복 횟수를 어떻게 알 수 있습니까?

답변

0

난 당신이 Animation Delegates

의 일반 사용 CAAnimation 클래스가 대리자 개체 애니메이션 시작 및 정지를 통지 할 수있는 수단을 제공 할 수 있다고 생각합니다.

애니메이션에 지정된 대리자가 있으면 animationDidStart : 메시지를 수신하고 시작된 애니메이션 인스턴스를 전달합니다. 애니메이션이 중지되면 대리자는 animationDidStop : finished : 메시지를 수신하고 애니메이션 인스턴스 이 전달 된 애니메이션을 전달하고 애니메이션이 완료되었는지 또는 수동으로 중지되었는지를 나타내는 부울을 반환합니다.

animationDidStart: 당신은 iteration.on이 카운터를 증가하는 것은 나 자신을 해결할 수있는 최고의 해답이 될 수 없습니다 반복 당신에게 수

+0

응답 해 주셔서 감사합니다. Ravindra! 나에게 맞는 계획 같아. 하지만 animationDidStart는 모든 반복 또는 시작 부분에서 호출됩니다. 처음에 전화가 오면 많이 사용하지 않을 수 있습니다. 대리인 이름은 시작될 때 호출 될 것이고 모든 반복에 해당하지 않을 수도 있음을 나타냅니다. 나는 다음 한 시간 만에 그것을 줄 것이다! – SurenderS

+0

Ravindra, 나는 animationDidStart가 애니메이션을 레이어에 추가 할 때 시작될 때만 호출되고 실행되는 동안 반복되는 각각의 애니메이션에 대해서는 호출하지 않는다는 것을 확인했습니다. – SurenderS

0

을 줄 것이다 호출 할 때마다 측정 카운터를 배치 할 수 있습니다.

나는 출발점에서 CaLayer를 사용하고 차량의 프레임과이 레이어가 타이머에서도 교차하는지 확인합니다. 문제는 여러 번 교차하므로 이미지와 너비의 폭과 높이를 제공하므로 시간이 계속됩니다. 그런 다음 교차 할 때 한 번만 랩을 계산하기 위해 플래그를 사용했습니다.

- 고마워요!