我试图为谷歌的GWT做一个游戏开发API来制作Canvas游戏,我对这个预渲染问题提出了一个问题。
首先:在使用removeChild()
或RootPanel.Remove()
(使用GWT)后,我不完全确定browser / Javascript / GWT如何管理已删除的画布,如果其数据保留在内存中,或者甚至是从内存中删除它的正确方法。
因此,我所提出的解决方案是使用多个(根据需要)大型隐藏画布作为预渲染调色板,并使用drawImage()魔术跳转绘制在主要上下文中的预渲染图像,并具有我自己插入,移除,空格等问题。
这是最好的解决方案吗?或者我应该尝试使用一个小画布来预览每个小图像和纹理?或者我应该尝试一些完全不同的东西吗?
提前致谢,对不起我的拼写。
答案 0 :(得分:1)
使用画布预渲染您的物品是一个好主意,但它并不总是最佳选择。 如果你的物品很复杂(有渐变,阴影和视觉效果),那么它会很好。但是如果你的项目很简单(图像,多边形,简单的贝塞尔曲线......),你的帧率不会增加但会减少(因为drawImage)。然后更好地实时渲染。
从我的实验中,你不会通过使用几个小画布(可能是少量内存)而失去性能,但它比大画布(如面向对象的场景)更容易管理。 如果您的商品有时会发生变化,您可以轻松管理临时画布的尺寸。
希望得到这个帮助。