2016-12-10 10 views
2

저는 이것이 프로그래밍 문제로 stackoverflow에 적합하다는 것을 100 % 확신하지는 않습니다. 대부분 수학 논리 문제입니다. 값에서애니메이션을 계산하는 방법 타임 스탬프를 기준으로 strokeStart를 계산 하시겠습니까?

// Set the animation duration appropriately 
    animation.duration = duration 

    // Animate from 0 (no circle) to 1 (full circle) 
    animation.fromValue = strokeStart 
    animation.toValue = 1 

    // Do a linear animation (i.e. the speed of the animation stays the same) 
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) 

    // Set the circleLayer's strokeEnd property to 1.0 now so that it's the 
    // right value when the animation ends. 
    progressCircle.strokeEnd = 1.0 

때문에 키 값은 기간이다와 협력하고, 항상 것입니다 최종 값은 1로 :

나는 아래의 코드의 일부 원을 애니메이션하고 있습니다.

원의 총 360 도가 항상 240 초 (4 분)를 나타낼 것입니다.

나는 시간에 대한 값을 연결하고 내가 원을 만드는거야 때 값을 시작하는 기능을 설정,하지만 함께 힘든 시간을 보내고있어 무엇을하는 것은 적절 사람들을 계산하는 방법이다.

예를 들어,이 서클 중 하나를 그리면 서버에서 타임 스탬프를 가져옵니다. 잡은 타임 스탬프가 정확히 120 초 전이라고 가정 해 봅시다. 원은 이미 완료된 1/2 방법으로 그려야하고 원의 180 도의 나머지는 총 4 분 중 나머지 120 초에 그려 져야합니다. 또 다른 예는 타임 스탬프가 3 분 50 초 전에 완료 되었다면 원은 기본적으로 strokeStart를 높은 백분율로 설정하여 채워질 것이며 다음 10 초 동안은 채울 것입니다. 내가 타임 스탬프를 잡아하는 방법을 알고

, 나는 타임 스탬프가 현재 시간에서 얼마나 많은 초 잡아하는 방법을 알고,하지만 난 strokeStart을 계산하는 방법을 모르겠어요.

여기에 대한 의견이 있으십니까?

답변

2

원이 240 초이므로 몇 초가 경과했는지 알고 있으므로 간단히 나누십시오.

let strokeStart = Double(secondsElapsed)/240.0 
+0

고맙습니다. 나는 왜 내 두뇌가 수학을 감쌀 수 없는지 모르겠다. 감사합니다. – user6820041