AS3-1 밀리 초 또는 5 밀리 초마다 정확한 시간 (프레임 속도 독립적)으로 이벤트를 실행하는 방법

Shabrido

플래시 프레임 속도와 관계없이 이벤트를 실행할 수 있는지 궁금합니다. 타이머 클래스, setTimeout-setInterval 등을 시도했지만 프레임에 크게 의존합니다.

예를 들면 다음과 같습니다.

var a = 0;
var timer:Timer = new Timer(5);
timer.start();

timer.addEventListener(TimerEvent.TIMER, valAdd)

function valAdd(e:TimerEvent)
{
    a++;
}

Event.ENTER_FRAME ..과 유사하게 작동합니다. 잠시 후 변수 "a"를 확인하면 예상대로 200이 아닌 60fps에서 약 118-120을 실행했습니다 (5ms마다 타이머). 그래서 이에 대한 해결책을 찾고 있습니다. 저의 사소한 문제에 대한 조언에 미리 감사드립니다.

Taskinoor

에서 타이머 매뉴얼 :

SWF 파일의 프레임 속도 또는 런타임 환경 (사용 가능한 메모리 및 기타 요인)에 따라 런타임은 약간 오프셋 간격으로 이벤트를 전달할 수 있습니다. 예를 들어 SWF 파일이 100 밀리 초 간격 인 10fps (초당 프레임 수)로 재생되도록 설정되어 있지만 타이머가 80 밀리 초 간격으로 이벤트를 실행하도록 설정된 경우 이벤트는 100 밀리 초 간격에 가깝게 전달됩니다. . 메모리를 많이 사용하는 스크립트도 이벤트를 상쇄 할 수 있습니다.

즉, 5 밀리 초와 같이 작은 정밀도로 작동하는 타이머를 만들 수 없습니다. 5 밀리 초는 매우 짧은 시간이며 런타임 시스템 자체가 내부적으로 많은 작업을 수행합니다. 이 타이머는 그다지 정확하지 않습니다.

이렇게 작은 간격의 타이머가 필요하지 않은 솔루션을 다시 설계해야합니다.

이 타이머 정밀도 문제는 AS3 또는 플래시에만있는 것이 아닙니다. 다른 언어의 타이머, 실행 시간 (예 : iOS의 NSTimer)도 이러한 작은 간격으로 작동하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관