Javascript 如何使用Konva.js将一个图像复制/粘贴到另一个图像?

Javascript 如何使用Konva.js将一个图像复制/粘贴到另一个图像?,javascript,html5-canvas,konvajs,Javascript,Html5 Canvas,Konvajs,我正在构建一个类似于俄罗斯方块的游戏,但它的方块移动平稳(逐像素)。 目前,我为每个新块创建了一个单独的Konva图像对象: let block = new Konva.Image({ x: 200, y: 0, transformsEnabled: 'position', listening: false, image: images.tiles, c

我正在构建一个类似于俄罗斯方块的游戏,但它的方块移动平稳(逐像素)。 目前,我为每个新块创建了一个单独的Konva
图像
对象:

let block = new Konva.Image({
            x: 200,
            y: 0,
            transformsEnabled: 'position',
            listening: false,
            image: images.tiles,
            crop: {
              x: colorindex * 128,
              y: shapeindex * 128,
              width: 128,
              height: 128
            },
            width: 128,
            height: 128,
            colorindex: colorindex,
            shapeindex: shapeindex,
            falling: true,
            fallingspeed: 1, 
          });

that.blocks.push(block);
that.blocklayer.add(block);
由于屏幕上有很多块,我注意到动画有点慢

现在,我想尝试将所有固定块放入一个大图像对象中,看看这是否更快


Konva是否可以将图像的一部分复制到另一个图像?

最简单的解决方案是将几个块移动到一个组中,然后缓存它:

group.cache();

演示:

我可以检查一下吗?您打算将“落地”形状放入固定图像中,然后只需移动当前的“下落”形状即可?没错。由于着陆块不必再移动,它们可以在一个大图像上,所以我需要某种位图复制来完成。谢谢,我将在中查看。我不太了解Konva中的缓存功能。@lavrton这里也有一个层解决方案-所以将画布分成两层,一层用于固定块,另一层用于移动块。每次移动块移动一步刷新其层,然后当它在游戏中着陆时,将其转移到着陆层并刷新一次。着陆层必须进行一次重要的刷新/重画,但仅在形状着陆时进行一次,这意味着移动块仅刷新单个形状。