KineticJS - KineticJS . node .listening()的性能影响

KineticJS - Performance Impact of Kinetic.Node.listening()

本文关键字:KineticJS 性能 影响 node listening      更新时间:2023-09-26

最近,我了解到我可以使用listening()方法来确定KineticJS节点是否正在侦听事件。我制作了一款在任何时候都有数百个可见形状的游戏。其中许多形状不需要侦听事件,因此我考虑禁用该功能。在该领域有经验的人是否可以解释禁用事件的潜在性能影响,以便我可以评估是否值得将其纳入我的项目中?

Good

由于舞台上的对象数量相对较多,因此为不需要响应事件的节点设置node.listening(false)可能会提高性能。舞台上的任何鼠标事件都将触发对所有侦听对象的调用——在您的示例中,每个事件调用数百个。性能提高的原因(有些明显)是每个事件必须调用的对象事件处理程序更少。

为了获得更好的性能,您可以查看Kinetic.FastLayer。可以把FastLayer看作是当前不需要事件处理程序的所有对象的容器。FastLayer渲染得非常快,因为没有事件开销。当你的一个对象需要使用事件时,你可以将它们移动到一个常规的动能。再次触发事件的图层。

最好

将一组当前不移动的对象转换为静态图像(caching)具有最佳性能。这样,这组对象就可以很快地从图像中移到画布上。同样,如果其中一个缓存对象需要使用事件,您可以将它们移动到常规的Kinetic。图层,并将剩余的对象集重新缓存到新图像中。

当然,你的设计将决定上述性能技巧是否可以应用到你的游戏中。

祝你项目顺利!