2012-09-06 1 views
1

나는 iBooks에서 실행되는 스크립트 전자 책을 만들고 있습니다. 그들은 JS setTimeout 및/또는 requestAnimationFrame을 사용하여 애니메이션을 수행합니다. 애니메이션이 너무 느리게 실행되는 이유를 광범위하게 디버깅 한 후, 요청한 20-50ms 대신에 (그리고 Chrome 또는 Safari의 바탕 화면으로), 번 이상의 간격으로 타이머가 실행되는 것으로 나타났습니다. 길거나 때로는 1 초 이상 (이것은 requestAnimationFrame/webkitRequestAnimationFrame이 iOS 버전 또는 적어도 iBooks 버전의 웹킷에서 사용 가능하지 않으므로 setTimeout입니다.)iPad의 iBooks/Safari에서 JS 타이머 세분성이 매우 낮습니까?

추가 조사를 한 후에,이 문제는 분명히 iPad 문제만큼이나 iBooks 문제가 아니라는 것을 알았습니다. iPad의 Safari에서 비슷한 세부 사항을 발견합니다. 이것은 느린 프로세서 (iPad 2에서 테스트 중입니다)의 기능입니까? here?

또는이 경우에는 here과 같이 스크롤하는 동안 setTimeout이 작동하지 않는 것으로보고됩니다 (내 경우에는 스크롤이 관련되지 않음).

내가하고있는 애니메이션의 유형은 잠재적으로 하드웨어 가속화 될 CSS 애니메이션을 사용하여 구현할 수있는 유형이 아닙니다.

결론 iBooks 나 Safari와 상관없이 누구나 iPad에서 JS로 미세한 타이머 세분성을 얻는 방법에 대한 아이디어가 있습니까?

답변

1

iBooks는 처음 열 때 책 전체를 읽으며 각 페이지를 열고 실행합니다. 또한 현재 열려있는 페이지의 요청을 배경 페이지의 미리 읽기 작업보다 정확하게 우선 순위를 매기는 것처럼 보이지 않으므로 사전 읽기 프로세스가 완료 될 때까지 스크립트가 많은 대형 서적 타이머에서 수십 초가 걸릴 수 있습니다 현재 페이지의 응답 성 (setTimeout 또는)이 더 심하게 영향을받을 수 있습니다.