我目前正在开发一款JavaScript(pure js)基于游戏的游戏.游戏包含5个大型精灵表(例如2861×768和4096×4864).游戏开始时,所有5个精灵表都预先加载到画布元素.这5个精灵中的三个一起表示一个动画,其中每个精灵包含75个帧.当一个精灵以其动画结束时,我隐藏它并显示下一个精灵.当第二个精灵完成动画时,我隐藏它并显示第三个/最后一个.
当即将显示第二个或第三个精灵时,会发生0.5秒-1秒的小延迟.图像正在被解码.
这不是第一次发生的事情,它总是发生的事情.并且该动画每5分钟重复一次,并且总是发生小延迟.
我之所以使用canvas元素进行预加载,是因为我认为WebKit会丢弃解码图像一段时间未使用,而canvas元素会阻止WebKit将其从内存中删除.但这不起作用.
我已经尝试了几乎所有我所知道的优化.我甚至通过删除后代选择器等重构了我的所有CSS.
我用来绘制这些动画的渲染器是由我自己构建的,它工作得很完美,所以这不是问题,因为它在Firefox中工作得非常好.
编辑[2016/03/04]: 我用帆布制作了一个模式,结果更糟.它落后很多.而延迟仍然是一样的.仅在NW中,Chrome中的问题并不存在.
Codepen:我的渲染器http://codepen.io/anon/pen/JXPWXX
注意:如果我隐藏那些其他元素opacity:0.2而不是opacity:0,则问题不会发生.但是,我无法隐藏它们,因为它们仍然可见.它们不应该是可见的.如果我添加opacity:0.01它是不可见的,并且问题不会发生在Chrome中,但仍然存在于NW中.
在NW中,当我从不透明度开始:0.2到不透明度:1时,正在处理图像解码.在Chrome浏览器中也不会发生同样的事情.

我使用以下版本:
nw.js v0.12.3
io.js v1.2.0
Chromium 41.0.2272.76
commit hash: 591068b-b48a69e-27b6800-459755a-2bdc251-1764a45
Run Code Online (Sandbox Code Playgroud)
三个图像精灵分别为14.4MB,14.9MB和15.5MB.每个精灵包含75帧.
为什么会发生这种情况,我该如何预防呢?
我在html/css/js桌面应用程序中使用nw.js,并且无法在全屏模式下完全删除鼠标光标.
我已经通过设置CSS属性删除它cursor: none,margin: 0,padding: 0对身体/ HTML.而且还toolbar: false与fullscreen: true在的package.json设置.但是光标在屏幕的所有边缘都可见几个像素(图片如下).
奇怪的行为,有人知道如何彻底删除它吗?
注意:这只是NW.js中的一个问题,因为它在所有浏览器和xulrunner中都能很好地工作,因为我们在公司中从xulrunner迁移到node-webkit(nw.js)所有应用程序都遇到了这个问题.
node-webkit ×2
css ×1
html ×1
html5-canvas ×1
javascript ×1
large-files ×1
nw.js ×1
performance ×1