目前我遇到的问题是,当我在本地(在 ubuntuVM 中)运行时,使用 WebStorm 作为网络服务器,我运行我的游戏并且它运行良好且响应迅速,但是当我将它上传到我的虚拟主机并播放时它从那里开始滞后并且点击事件没有响应。

我认为这是因为我错误地使用了 Ticker(你如何为阶段调用更新?):

canvas = document.getElementById('myCanvas');
canvas = new createjs.Stage(canvas);
createjs.Ticker.addEventListener("tick", canvas);

并且所有容器、 Sprite 等都是这个阶段的 child

http://thegamingproject.org/webgames/ludumdare28/

最佳答案

为了解决延迟问题,我建议您首先考虑在 Ticker 上调整您的 FPS。查看文档 here 。您可能还想尝试使用 enableMouseOver frequency 。小心动画,并在进行 alpha 淡入淡出等之前利用 caching。我发现 easeljs 库会滞后一些详细的矢量内容(例如从 Flash IDE 导出时)。尽可能使用 Bitmaps 来限制绘图指令。

至于 Ticker 监听器,据我所知,您有以下 2 个选项:

1.将舞台作为监听器添加到股票行情

这是最容易管理的,尽管它使您对渲染的控制量最少。根据 this createjs tutorial ,这仅建议用于快速测试。

示例

createjs.Ticker.addEventListener("tick", stage);

优点
  • stage.update() 为每个滴答自动调用
  • 低维护或逻辑需求

  • 缺点
  • 当更改反射(reflect)在阶段
  • 时的最低控制量
  • 可能不是“实时”游戏的最佳解决方案

  • 2. 在自定义函数中调用 stage.update()

    此解决方案允许手动控制更新舞台。如果您需要“暂停”更新内容(例如游戏),这可能很有用。

    示例
    createjs.Ticker.addEventListener("tick", tick);
    
    function tick(){
         var isDirty = false;
         //some custom logic
    
         if(isDirty) {
              stage.update();
    
         }
    }
    

    优点
  • 完全控制绘图更改何时反射(reflect)在舞台上。
  • 可能能够通过不更新每个滴答声来提高性能

  • 缺点
  • 通过向每个滴答添加过多的自定义逻辑可能引入性能问题
  • 需要更多的开销来管理
  • 关于html - 用于 Ticker 的 EaselJS 的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20805311/

    10-13 05:03