2013-05-12 62 views
0

您好我正在遵循使用easelJS编写基于浏览器的游戏的教程。教程运行良好,但我注意到一些问题,同时在Chrome上播放动画。动画运行速度较慢,不重播没有页面重新加载铬

Chrome运行动画速度较慢,一旦播放一次,除非我重新加载页面,否则相同的动画将无法再播放。

在Firefox中运行它没有任何这些问题。

这里的链接:(使用检查元素代码)

http://david.blob.core.windows.net/easeljstutorials/easelJSSpritesTutorial03.html

我听说有镀铬一些缓存的问题,所以我想这可能是问题。 手动删除缓存实际上允许动画在没有页面重新加载的情况下再次播放,但它仍然运行缓慢(与Firefox比较)。

因为我想为跨浏览器兼容性编码是否有支持铬的方法来解决这些问题?如阻止将图像存储在缓存中或其他东西? (不得已我希望)提前

感谢,

恭平

编辑:看来动画的速度是如此IE10不知道它应该是什么样的速度,你知道的一样。

+0

你的描述听起来像内存溢出 – powtac 2013-05-12 12:34:08

+0

看到这个线程http://stackoverflow.com/questions/3156837/javascript-speed- chrome-v-firefox – 2013-05-12 12:39:02

+0

缓存只会改变动画后影响外观,它不会影响速度! - 很难说你的问题是什么,没有看看你的代码 – olsn 2013-05-13 08:14:47

回答

0

“重置”后,这种情况不起作用的原因是您依靠图像加载事件来启动动画。这将是第一次,但第二次,图像已经加载,因此你永远不会从图像(意思是“startGame()”)获取onload事件。也许最好的方法是创建新的图像每次只需这些线路进入你的初始化:。

function init() { 
    var imgMonsterARun = new Image(); 
    var imgMonsterAIdle = new Image(); 
    // Other stuff 
} 
+0

我理解你的推理,并感谢你的回复。如果这是 – 2013-05-13 16:36:29

+0

..问题虽然不会在ie和ff中是一样的吗?在这些浏览器上,按下开始按钮时动画会重播吗?还有一种方法可以避免每次重新创建图像,因为当我移动到自己的游戏Id时,他们会像pos一样高效?感谢迄今为止的答复 – 2013-05-13 16:39:58

+0

当然,实际上,以上是不好的做法。我只是指出它失败了,因为onload从不会触发。你的开始按钮应该做别的事情。像'if(alreadyLoaded){startGame(); } else {loadImagesThenStartGame(); } – Lanny 2013-05-14 00:47:49

0

我读到一篇文章Fix your Timestep它会帮你,只是需要将其转换为JavaScript,请仔细阅读