Respuestas:
Los lienzos son transparentes por defecto.
Intente configurar una imagen de fondo de página y luego coloque un lienzo sobre ella. Si no se dibuja nada en el lienzo, puede ver completamente el fondo de la página.
Piense en un lienzo como pintar sobre un plato de vidrio.
Creo que estás intentando hacer exactamente lo que acabo de intentar hacer: quiero dos lienzos apilados ... el inferior tiene una imagen estática y el superior contiene sprites animados. Debido a la animación, debe borrar el fondo de la capa superior para que sea transparente al comienzo de la renderización de cada nuevo cuadro. Finalmente encontré la respuesta: no está usando globalAlpha, y no está usando un color rgba (). La respuesta simple y efectiva es:
context.clearRect(0,0,width,height);
Si quieres que un particular <canvas id="canvasID">
sea siempre transparente, solo tienes que configurar
#canvasID{
opacity:0.5;
}
En cambio, si desea que algunos elementos particulares dentro del área del lienzo sean transparentes, debe establecer la transparencia al dibujar, es decir
context.fillStyle = "rgba(0, 0, 200, 0.5)";
opacity
cambios no tendrán efecto si hay un relleno de fondo en el lienzo.
Simplemente configure el fondo del lienzo en transparente.
#canvasID{
background:transparent;
}
Pinta tus dos lienzos en un tercer lienzo.
Tuve este mismo problema y ninguna de las soluciones aquí resolvió mi problema. Tenía un lienzo opaco con otro lienzo transparente encima. El lienzo opaco era completamente invisible pero el fondo del cuerpo de la página era visible. Los dibujos del lienzo transparente en la parte superior eran visibles, mientras que el lienzo opaco debajo no lo era.
No puedo comentar la última respuesta, pero la solución es relativamente fácil. Simplemente configure el color de fondo de su lienzo opaco:
#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas
No estoy seguro, pero parece que el color de fondo se hereda como transparente del cuerpo.