자바에서 canvas.putImageData
에 대한 사용자 지정 호출 횟수를 만드는 응용 프로그램을 빌드하고 있습니다. putImageData
에 대한 각 호출 사이에서 이미지 데이터가 수정됩니다. 데이터를 수정하는 데 필요한 시간은 호출마다 다릅니다. 또한 사용자는 실행 중일 때 애니메이션을 멈출 수 있어야합니다 (버튼을 사용하고 있습니다). 처음에는 다음과 같이 사용했습니다 :HTML5의 canvas.putImageData에 대한 복수 호출
for (var i=0; i < n; i++) {
canvas.putImageData(imgdata, 0, 0);
modify(imgdata);
}
그러나 이것은 각 프레임을 표시하지 않으며 마지막 프레임 만 표시합니다. 작동은 canvas.putImageData
이후에 경고를하는 것입니다.하지만 그것은 매우 짜증납니다. 내가 제안 많은 분들 해요로 setInterval
및 cancelInterval
를 사용했지만,이 두 가지 이유로 나를 위해 작동하지 않습니다
- 이미지 데이터를 수정하는 데 필요한 시간이 달라집니다.
- setInterval은 비동기입니다. 내가 사용하는 지연이 너무 짧으면 수정 (imgdata) 호출이 스택에 쌓여 사용자가 원할 때 애니메이션을 중단 할 수 없습니다.
이 작업을 올바르게 수행하려면 어떻게해야합니까?
크기 조정 방법이 훌륭합니다! 그러나 코드를 살펴보면 캐시의 너비, 높이, 중요한 것은 코어 루프에서 사용하는 대신 모든 메소드의 데이터 (var imgData = img.data)를 사용하는 것이 매우 간단하다는 것을 알았습니다. 또한 계산을 반복하는 캐시 (4 * ...). 경우에 따라 32 비트 또는 64 비트의 성능 배열을 사용할 수도 있으며, stackEnd는 한 가지 예입니다. (나는 이것에 대해 조금 이야기했다 : http://stackoverflow.com/a/14429346/856501). – GameAlchemist