Відповіді:
Полотна за замовчуванням прозорі.
Спробуйте встановити фонове зображення сторінки, а потім покладіть на неї полотно. Якщо на полотні нічого не намальовано, ви можете повністю побачити фон сторінки.
Подумайте про полотно, як про малювання на скляній тарілці.
Я вважаю, що ви намагаєтесь робити саме те, що я просто намагався зробити: я хочу два полотні полотна ... нижній має статичне зображення, а верхній містить анімовані спрайти. Через анімацію потрібно очистити фон верхнього шару до прозорого на початку візуалізації кожного нового кадру. Нарешті я знайшов відповідь: це не використання globalAlpha, і не використання кольору rgba (). Проста, ефективна відповідь:
context.clearRect(0,0,width,height);
Якщо ви хочете, щоб конкретна <canvas id="canvasID">
завжди була прозорою, ви просто повинні встановити її
#canvasID{
opacity:0.5;
}
Натомість, якщо ви хочете, щоб якісь конкретні елементи всередині області полотна були прозорими, ви повинні встановити прозорість, коли малюєте, тобто
context.fillStyle = "rgba(0, 0, 200, 0.5)";
opacity
зміни не матимуть ефекту, якщо полотно буде залито фоном.
Просто встановіть фон полотна прозорим.
#canvasID{
background:transparent;
}
Намалюйте свої два полотна на третьому полотні.
У мене була ця сама проблема, і жодне з рішень тут не вирішило моєї проблеми. У мене було одне непрозоре полотно з іншим прозорим полотном над ним. Непрозоре полотно було абсолютно непомітним, але видно тло тіла сторінки. Малюнки з прозорого полотна вгорі були видні, тоді як непрозоре полотно під ним не було.
Не можу коментувати останню відповідь, але виправити відносно легко. Просто встановіть колір тла вашого непрозорого полотна:
#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas
Я не впевнений, але схоже, що колір фону успадковується як прозорий від тіла.