최대한 빨리 기능을 실행하는 requestAnimationFrame
이라는 최근 기능이 있습니다. 이는 애니메이션 목적으로 이으로 만들어 졌기 때문에 좋은 연습입니다.
코딩면에서 작동하는 방식은 setTimeout
과 동일합니다. 기능이 완료되면 requestAnimationFrame
으로 전화하십시오.
이 함수에서 현재 시간을 가져와 그 시점에 개체의 위치를 확인합니다.
보류중인 기능을 cancelRequestAnimationFrame
으로 취소하고 반환 값 requestAnimationFrame
을 전달할 수 있습니다.
현재이 기능은 크로스 브라우저가 아니며 기능은 공급 업체 접두사입니다 (예 : Chrome 용 webkitRequestAnimationFrame
예 : http://jsfiddle.net/pimvdb/G2ThU/1/.
var div = document.getElementById('div');
var animation;
function move() {
var time = Math.round((new Date()).getTime()/10) % 200;
div.style.left = time + 'px';
animation = requestAnimationFrame(move);
}
document.getElementById("start").onclick = function() {
animation = requestAnimationFrame(move);
}
document.getElementById("stop").onclick = function() {
cancelRequestAnimationFrame(animation);
}
어떻게하면 더 역동적으로 만들 수 있습니까? 정확한 간격을 지정하는 것이 아니라 함수를 사용하여 간격을 삭제할 수 있기를 원합니다.간격이 어떻게 될지 모르지만 .. – mowwwalker
변수가 클로저에서'var'으로 정의되어 있고 클로저에서 변수를 덮어 쓰지 않으면 아무 문제가 없습니다. –