最近,我了解到可以使用 listening()
方法来确定 KineticJS 节点是否正在监听事件。我制作了一款在任何给定时间都有数百个可见形状的游戏。其中许多形状不需要监听事件,因此我考虑禁用该功能。在该领域有经验的人能否解释禁用事件对性能的潜在影响,以便我可以评估它是否值得合并到我的项目中?
最佳答案
好
由于舞台上的对象数量相对较多,因此通过为不需要响应事件的节点设置 node.listening(false)
可能会提高性能。舞台上的任何鼠标事件都会触发对所有监听对象的调用 - 在您的情况下,每个事件数百次调用。性能提升的原因(有点明显)是每个事件必须调用的对象事件处理程序更少。
更好
为了获得更好的性能,您可以考虑 Kinetic.FastLayer
。将 FastLayer 视为当前不需要事件处理程序的所有对象的容器。由于没有事件开销,FastLayer 的渲染速度非常快。当您的某个对象需要使用事件时,您可以将它们移动到常规 Kinetic.Layer,在其中再次触发事件。
最佳
通过将一组当前不可移动的对象转换为静态图像(缓存
)可以获得最佳性能。这样,这组对象可以非常快速地从图像传输到 Canvas 。同样,如果缓存的对象之一需要使用事件,您可以将它们移动到常规 Kinetic.Layer 并将剩余的对象集重新缓存到新图像中。
当然,您的设计将决定上述性能技术是否可以应用到您的游戏中。
祝您的项目顺利!
关于javascript - KineticJS - Kinetic.Node.listening() 的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515411/