Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

HTML5 Canvas รองรับ Double Buffering หรือไม่?

รองรับ โดยสร้าง canvas ที่ 2 (off-screen) วาดลงไปก่อน แล้วค่อย copy ไป canvas หลักด้วย drawImage()

// canvas หลัก
var canvas1 = document.getElementById('canvas');
var context1 = canvas1.getContext('2d');

// buffer canvas
var canvas2 = document.createElement('canvas');
canvas2.width = 250;
canvas2.height = 250;
var context2 = canvas2.getContext('2d');

// วาดบน buffer
context2.beginPath();
context2.moveTo(10,10);
context2.lineTo(10,30);
context2.stroke();

// copy ไป canvas หลัก
context1.drawImage(canvas2, 0, 0);

วิธีนี้ป้องกัน flickering และเพิ่มประสิทธิภาพการวาดซ้ำ