Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Createjs:将鼠标悬停添加到容器慢降FPS_Javascript_Createjs - Fatal编程技术网

Javascript Createjs:将鼠标悬停添加到容器慢降FPS

Javascript Createjs:将鼠标悬停添加到容器慢降FPS,javascript,createjs,Javascript,Createjs,链接1- 链接2- 在上面的链接中,我在每个文件的单独容器中添加了一组数字,您可以在右上角找到FPS。问题是当我把鼠标移到这个链接1上并点击任何数字时,你会看到FPS越来越慢&越来越慢,使得世界在左侧旋转得越来越慢 在这个链接上,链接2,我只添加了一个鼠标和5个鼠标,但是FPS没有太大的区别,为什么当我有37个容器时它会滞后这么多。如果你需要解决问题,我可以给出我的代码。我粗略地看了一下你的代码,但是深入研究整个项目并不是调试优化问题的好方法 首先要考虑的是,如果在您的平台上启用了鼠标操作> /

链接1- 链接2-

在上面的链接中,我在每个文件的单独容器中添加了一组数字,您可以在右上角找到FPS。问题是当我把鼠标移到这个链接1上并点击任何数字时,你会看到FPS越来越慢&越来越慢,使得世界在左侧旋转得越来越慢


在这个链接上,链接2,我只添加了一个鼠标和5个鼠标,但是FPS没有太大的区别,为什么当我有37个容器时它会滞后这么多。如果你需要解决问题,我可以给出我的代码。

我粗略地看了一下你的代码,但是深入研究整个项目并不是调试优化问题的好方法

首先要考虑的是,如果在您的平台上启用了<代码>鼠标操作> /代码>,我建议在交互式元素上自由使用<代码> MousHeave= false ,并且在不交互的任何东西上<代码>鼠标启用= MousHeave= false < /代码>。滚动可能是一个很大的原因,因为它要求每件东西每秒绘制20次(在您的使用中)。重新绘制文本和向量的成本可能很高

// Non-interactive elements (block all mouse interactions)
element.mouseEnabled = element.mouseChildren = false;

// Interactive elements (reduce mouse-checking children individually)
element.mouseChildren = false;

如果它们不改变,您可能会考虑缓存文本元素或按钮图形。我想我在源代码中看到了一些缓存,但一般来说是一个很好的考虑。

--

尽管如此,调试优化可能会很困难。。如果删除所有按钮会提高你的表现,考虑你的按钮是如何构造的,以及它们的成本是多少。 *滑鼠是昂贵的 *向量和文本可能很昂贵 *缓存在正确使用时会有所帮助,但如果它发生得太频繁,可能会很昂贵。 *查看tick()上发生的情况。有时,代码会持续运行,这并不需要

--

其他一些注意事项:

  • 这与您的想法不同:
    \u oButton.off(“mousedown”)
    --您需要传递()上的
    调用的结果。如果您正在清理,请调用
    \u oButton.removeAllEventListeners()
  • 您不需要将光标设置在
    鼠标上方
    。光标只有在滚动时才会改变,所以只需设置一次,然后去掉你的
    按钮

  • 只为自定义类扩展EventDispatcher可能是有意义的,它为您提供了类似于
    on()
    方法的功能,该方法支持
    数据
    参数。我可能会建议您用它来代替
    CTextButton

  • 请注意,RAF不支持帧速率属性(它只使用浏览器的RAF速率,通常为60fps)。使用
    createjs.Ticker.timingMode
    代替不推荐的
    useRAF

希望这能有所帮助。

我粗略地看了一下您的代码,但是深入研究整个项目并不是调试优化问题的好方法

首先要考虑的是,如果在您的平台上启用了<代码>鼠标操作> /代码>,我建议在交互式元素上自由使用<代码> MousHeave= false ,并且在不交互的任何东西上<代码>鼠标启用= MousHeave= false < /代码>。滚动可能是一个很大的原因,因为它要求每件东西每秒绘制20次(在您的使用中)。重新绘制文本和向量的成本可能很高

// Non-interactive elements (block all mouse interactions)
element.mouseEnabled = element.mouseChildren = false;

// Interactive elements (reduce mouse-checking children individually)
element.mouseChildren = false;

如果它们不改变,您可能会考虑缓存文本元素或按钮图形。我想我在源代码中看到了一些缓存,但一般来说是一个很好的考虑。

--

尽管如此,调试优化可能会很困难。。如果删除所有按钮会提高你的表现,考虑你的按钮是如何构造的,以及它们的成本是多少。 *滑鼠是昂贵的 *向量和文本可能很昂贵 *缓存在正确使用时会有所帮助,但如果它发生得太频繁,可能会很昂贵。 *查看tick()上发生的情况。有时,代码会持续运行,这并不需要

--

其他一些注意事项:

  • 这与您的想法不同:
    \u oButton.off(“mousedown”)
    --您需要传递()上的
    调用的结果。如果您正在清理,请调用
    \u oButton.removeAllEventListeners()
  • 您不需要将光标设置在
    鼠标上方
    。光标只有在滚动时才会改变,所以只需设置一次,然后去掉你的
    按钮

  • 只为自定义类扩展EventDispatcher可能是有意义的,它为您提供了类似于
    on()
    方法的功能,该方法支持
    数据
    参数。我可能会建议您用它来代替
    CTextButton

  • 请注意,RAF不支持帧速率属性(它只使用浏览器的RAF速率,通常为60fps)。使用
    createjs.Ticker.timingMode
    代替不推荐的
    useRAF

希望这能有所帮助。

谢谢你,兰尼兄弟。你回答的所有问题都帮助我提高了。我还使用for循环访问容器。这会不会太慢帧速率。或者我们最好调用类来创建按钮。这样就可以避免for循环了。请给出你的建议。谢谢你,兰尼兄弟。你回答的所有问题都帮助我提高了。我还使用for循环访问容器。这会不会太慢帧速率。或者我们最好调用类来创建按钮。这样就可以避免for循环了。请给出你的建议。