2016-04-07 22 views
1

使用CreateJS库处理Canvas手机游戏。一切顺利,除了这个问题:锁屏后Chrome中无法看到画布元素

当我通过Home Button退出浏览器或锁定手机,锁定屏幕或浏览器重新启动后,Canvas元素不可见。刷新解决了这个问题。

我试过了铬元素检查器,正如你在屏幕截图上看到的那样,元素存在并且它位于正确的位置。我不知道它为什么看不见。

任何想法?

enter image description here

+0

也许你的画布大小改变,或它的某个父的innerHTML已编辑。 – Kaiido

+0

我有一个函数,它调整窗口大小更改的画布大小 - 以优化画布位置。但是这只影响画布宽度/高度和顶部/左侧属性。正如你在屏幕上看到的,画布元素的位置是正确的。这让我觉得它的透明属性设置为0.但事实并非如此。你有任何其他变种为什么会发生? – zur4ik

+0

如果您按照自己的想法调整画布的“宽度”和“高度”属性,那么画布及其所有上下文的属性将被清除,然后您必须重绘所有内容。如果你用css调整大小,那很糟糕,但这是一个画布被清除的错误。 – Kaiido

回答

1

如果你抢像素,你会发现,它实际上仍然存在。这可能是Chrome 49/50中的一个错误(我试图找到一个可接受的解决方法)。

如果你改变了画布宽度为0,然后返回到正确的尺寸,或旋转装置几次按运行选项卡按钮,然后交换回来你会发现它会重新开始可见。

这似乎是一些休眠的问题与硬件加速:/

+0

看起来像你给了我最好的解释:) – zur4ik

+0

没问题 - 如果我找到一个解决方案,我会在这里发布。目前,我监听一个制表符切换事件,获取DOM中的所有画布,将大小+调整大小调整为0并返回。在一些测试中,我们也抓取像素,调整大小然后绘制内容 这意味着每个绘画循环必须重新获取上下文,并重新应用任何变换。 这对我来说并不理想,因为我现在想用一个'修复'修补大约100场比赛。艰难时期 :) –