【问题标题】:EaselJS cache Text objectEaselJS 缓存文本对象
【发布时间】:2015-05-21 15:21:25
【问题描述】:

我想要一些关于使用 EaselJS 库缓存 Text 对象的帮助。

我从来没有完全理解缓存是如何工作的,而且我一定错过了一些真正基本的东西,因为我似乎无法让它工作。

举个简单的例子。

this.label.cache(this.label.x, this.label.y, rec.width, rec.height);

https://jsfiddle.net/xnqcjsg8/

如果您注释缓存 Text 对象的行,则它会正确显示。否则你在舞台上什么都看不到。

我知道我可以而且应该缓存文本对象,因为它们的渲染成本很高,但我不知道如何。

任何帮助表示赞赏,在此先感谢!


【问题讨论】:

    标签: caching rendering easeljs createjs


    【解决方案1】:

    缓存是相对于对象的,所以如果在 x/y 上移动对象,就不必更新缓存。此外,当您调整对齐方式时,边界将具有xy 属性,这将是左上角与注册点的偏移量。

    这是一个更新小提琴: https://jsfiddle.net/xnqcjsg8/1/

    这是新的缓存功能。如果您使用 [0,0] 分出 x 和 y,您可以看到它是如何根据对齐方式进行裁剪的。

    this.label.cache(rec.x, rec.y, rec.width, rec.height);
    

    我还稍微简化了你的小提琴。

    【讨论】:

    • 现在说得通了!非常感谢。您介意在这里回答另一个相关问题,这样我就不必创建一个新问题了吗?我不确定我是否会在这里讨论规则......
    • 如果可以的话,很乐意提供帮助。
    • 如果我缓存一个包含许多位图的容器会有帮助吗?我在某处读到(不确定是否准确),应该在位图对象中避免缓存,并且一般只能在形状/文本和矢量图形中使用。再次感谢!
    • 缓存单个位图是不必要的(除非您想使用过滤器,否则它是强制性的),因为缓存只是在后台(在画布实例中)制作位图的“副本”,并且而是绘制它。我听说过它似乎可以提高性能的情况,但我个人还没有看到。如果您将一堆图像放在一个容器中,并且它们不会更改,那么缓存该容器可以大大提高性能,因为它会减少对一个容器缓存的绘制调用。希望有帮助!
    • 非常感谢!一定会尝试的。
    猜你喜欢
    • 2019-01-28
    • 2014-08-21
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2016-11-30
    • 2012-06-06
    相关资源
    最近更新 更多