Javascript 移动安卓Chrome无法与HTML5和CREATEJS配合使用-冻结问题

Javascript 移动安卓Chrome无法与HTML5和CREATEJS配合使用-冻结问题,javascript,android,html,html5-canvas,createjs,Javascript,Android,Html,Html5 Canvas,Createjs,我使用HTML5和CREATEJS开发了一个应用程序。我遇到了一些问题,几个星期都找不到解决办法。我希望有人能帮忙 1) 在Android Google Chrome上,当我简单地点击屏幕上的任何地方时,就会出现一个问题:FPS会下降,在我触摸的过程中,任何正在播放的动画都会冻结。问题只存在于Android上的移动Chrome浏览器中。它不存在于其他移动浏览器中,也不存在于iPhone、Safari、Firefox等。 我使用webview创建了一个简单的apk,它也没有问题。因此,出于某种原因

我使用HTML5和CREATEJS开发了一个应用程序。我遇到了一些问题,几个星期都找不到解决办法。我希望有人能帮忙

1) 在Android Google Chrome上,当我简单地点击屏幕上的任何地方时,就会出现一个问题:FPS会下降,在我触摸的过程中,任何正在播放的动画都会冻结。问题只存在于Android上的移动Chrome浏览器中。它不存在于其他移动浏览器中,也不存在于iPhone、Safari、Firefox等。 我使用webview创建了一个简单的apk,它也没有问题。因此,出于某种原因,问题只存在于移动android chrome中

代码被优化到最大值。2个月前,我们只使用了1个画布,但现在我们使用了多个画布,每次在每个画布上运行的动画更少。在安卓firefox中,它工作得很完美,但在安卓chrome中,它只需点击一次就可以冻结

我试图禁用stagemousedown/up事件,因为当我只需单击stage中的任意位置时,就会触发它们。这并没有解决问题,或者可能存在一些我不知道如何禁用的隐藏stagetouch事件

2) 在Android Google Chrome和iPhone6 Safari上,当我点击旋转按钮时,游戏开始旋转,但延迟至少1.5秒,但代码中没有添加这样的延迟。在PC上,任何浏览器,Android/iOS移动Firefox,这都是完美的,没有延迟。在iOS Safari iPhone8中,它同样可以完美工作。 我使用webview创建了一个简单的apk,它也没有这个问题。因此,出于某种原因,问题只存在于移动android chrome中。 19年10月11日更新:问题2已通过减少画布大小和删除所有消耗大量内存的阴影效果得到解决。问题1仍然没有解决,完全没有想法可以尝试。感谢您的帮助。

我的项目完成了99%,除了这两个问题。我希望能够修复它们,因为我真的不想浪费数月的工作,转而使用其他javascript库进行游戏,这没有问题,比如PIXIJS

我试着与皇家空军和皇家空军同步,但在任何情况下仍然没有改善。 任何动画都需要Stage.update()。把它们放在股票行情上是它变慢的原因

要查看实际问题,请打开此URL:

测试方法:在Android Google Chrome人像模式下打开上面的链接,然后单击旋转。在旋转过程中,点击游戏画布上方或任何位置。注意,一切都冻结了

提取代码只是为了测试这些问题,因此在旋转几圈后可能会冻结。我明天会解决这个问题,但我希望有人能提出一些解决问题的想法。

缓存可能会工作

var testShape=new createjs.Shape(); 
testShape.graphics.beginFill("red").rect(0,0,100,100);
testShape.cache(0,0,100,100);
stage.addChild(testShape); 

// If you make changes and want to refresh the cache
testShape.updateCache()
问题#1显然在一些使用安卓谷歌Chrome的旧设备上是孤立的。这个问题是由于CREATEJS在stagedown事件中使用了太多侦听器造成的。我目前正在等待该框架的开发人员给出答案,或者等待Chrome收到一个严肃的更新


问题#2通过删除所有明显消耗大量内存的文本阴影CSS效果得到修复。

也许可以使用实际的html5游戏引擎来开发游戏。似乎这只是优化问题。在77.0.3865.120版(官方版本)(64位)@ArulMani中,第一点对我来说很好。你使用了什么设备?是CreateJS“使用了太多的侦听器”,还是你的代码?这是指这个问题吗@兰尼,问题也一样。我认为这不是我的团队开发的个性化代码。CreateJS监听触摸事件的方式与Android上的Chrome处理触摸事件的方式有些不兼容。在iOS上,这个问题并不存在,因为在iOS上,Chrome使用Webkit。我们还为Android开发了一个Webkit应用程序,这个问题也不存在。在Android Firefox中,它也不存在。因此,要隔离这个问题,似乎是Blink引擎(由Chrome使用)和CreateJS之间不兼容。我还测试了在Android Chrome上使用Pixi开发的复杂项目,没有问题。