Odpowiedzi:
Płótna są domyślnie przezroczyste.
Spróbuj ustawić obraz tła strony, a następnie umieść na nim płótno. Jeśli nic nie jest narysowane na płótnie, możesz w pełni zobaczyć tło strony.
Pomyśl o płótnie jak o obrazie na szklanej płycie.
Wydaje mi się, że próbujesz zrobić dokładnie to, co właśnie próbowałem zrobić: chcę dwa ułożone w stos płótna ... dolne ma statyczny obraz, a górne zawiera animowane duszki. Z powodu animacji musisz wyczyścić tło górnej warstwy, aby było przezroczyste na początku renderowania każdej nowej klatki. W końcu znalazłem odpowiedź: nie używa globalAlpha i nie używa koloru rgba (). Prosta i skuteczna odpowiedź brzmi:
context.clearRect(0,0,width,height);
Jeśli chcesz, aby konkret <canvas id="canvasID">
był zawsze przezroczysty, po prostu musisz go ustawić
#canvasID{
opacity:0.5;
}
Zamiast tego, jeśli chcesz, aby niektóre elementy wewnątrz obszaru płótna były przezroczyste, musisz ustawić przezroczystość podczas rysowania, tj
context.fillStyle = "rgba(0, 0, 200, 0.5)";
opacity
zmiany nie przyniosą efektu, jeśli na płótnie będzie wypełnione tło.
Po prostu ustaw przezroczyste tło płótna.
#canvasID{
background:transparent;
}
Pomaluj swoje dwa płótna na trzecim płótnie.
Miałem ten sam problem i żadne z rozwiązań tutaj nie rozwiązało mojego problemu. Miałem jedno nieprzezroczyste płótno z innym przezroczystym płótnem nad nim. Nieprzezroczyste płótno było całkowicie niewidoczne, ale tło strony było widoczne. Rysunki z przezroczystego płótna na górze były widoczne, podczas gdy nieprzezroczyste płótno poniżej nie było.
Nie mogę skomentować ostatniej odpowiedzi, ale poprawka jest stosunkowo łatwa. Po prostu ustaw kolor tła nieprzezroczystego płótna:
#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas
Nie jestem pewien, ale wygląda na to, że kolor tła jest dziedziczony z ciała jako przezroczysty.