我当前正在使用canvas编写一个小游戏。针对该游戏,我需要一种雾化效果来隐藏地图的大部分部分,并且只有玩家周围的一个小区域应该是可见的。因此,我使用第二个canvas来覆盖游戏发生的那个画布,用渐变(从透明到黑色)填充它:
function drawFog(){
fogc.clearRect(0,0,700,600);
// Create gradient
var grd=fogc.createRadialGradient(player.getPosX(),player.getPosY(),0,player.getPosX(),player.getPosY(),100);
grd.addColorStop(0,"rgba(50,50,50,0)");
grd.addColorStop(1,"black");
// Fill with gradient
fogc.fillStyle=grd;
fogc.fillRect(0,0,700,600);
}
不幸的是,这会导致巨大的性能问题,因为它将在每一帧重新绘制。
我想问一下是否有更好的解决方案来实现相同的效果,以获得更好的性能。
drawImage
即可,我认为这样会更快。 - Passerby