2016-09-25 10 views
0

자바 스크립트 게임에서 우리는 "touchmove"이벤트가 방향이 바뀔 때까지 느리게 움직이고 "janky"이벤트가 원활 해지는 문제가 발생합니다.Android Chrome touchmove가 오리엔테이션 변경까지 간헐적으로 느려짐

게임이 레벨로드와 같이 많은 작업을 수행 할 때 속도가 느려집니다.

여기는 느린 터치 동작의 실제 동작과 문제를 해결하는 방향 변경을 보여주는 비디오입니다.

https://youtu.be/7rSqkJuOQjc


다음과 같은 경고가 로그에 '하는 TouchMove'입력 이벤트의

취급을 표시 않습니다

때문에 메인 스레드가 바쁜에 141 ms 동안 지연되었다. 이벤트 핸들러를 '수동적'으로 표시하여 페이지의 응답 속도를 높이십시오.

그러나 느린 이벤트는 레벨로드 및 스프라이트 작성과 같이 과중한 작업을 중단 한 후에도 지속됩니다.

맵을 패닝해야만 인터페이스 스크롤을 중지 할 수없는 이유는 무엇이든 패시브 핸들러를 사용할 수 없습니다.


나는 속도 저하가 나는 터치 핸들러가 호출 빈도를 측정하고 그들이 이상한 것 같은 터치 이벤트 관련이 가정합니다.

~ 20ms 미만의 행에 5-10 개의 이벤트가 수신되면 약 150-200ms의 이벤트가 발생하고 빠른 이벤트의 다른 일괄 처리 및 다른 느린 이벤트가 발생합니다. 방향 변경 후

는, 모든 이벤트가 20ms의 나는 또한 requestAnimationFrame에서 내 반응을 측정 한


에서의 수신 그들은 상당히 견고한 16.8ms 사람들을 위해


것 같다 당신이 직접 문제를 볼 수있는 intrested https://blight.ironhelmet.com

Chrome과 Cordova에서 발생하는 문제는 Crosswal과 Crosswal 케이. iOS의 Safari 또는 테스트를 마친 데스크톱 브라우저에서는 문제가 발생하지 않습니다.


다른 사람에게이 문제가 있었는지, 어떻게 수정해야하는지 알고 싶습니다.

"방향 변경"또는 방향 변경 중에 javaScript를 사용하여 강제 수행 할 수 있습니까?

답변

0

하드웨어 렌더러가 시작되지 않았고 느린 소프트웨어 렌더링으로 인해 이벤트 처리 속도가 느려졌습니다. (한 캔버스에서 다른 캔버스로 픽셀 그리기)

오리엔테이션 변경 후 가비지 수집기가 하드웨어 렌더러를 시작하는 데 사용되지 않는 캔버스를 정리 한 것 같습니다.