做了以下测试:
1、将开放数据域关闭,画面正常
2、将开放数据域打开,在启动画面阶段,就会一直出现闪屏现象(此时主域和开放数据域还没有post 消息)
3、在开发者工具中不会出现闪屏现象
4、主域 post 消息给开放数据域,可正常显示期望的开放数据域的画面,就是闪屏还是一直存在。
代码逻辑:
主域和开放数据域是两个独立的工程,启动时两个域都会同时执行启动步骤,都会按照相同的启动流程创建 canvas(开放数据域中创建的 canvas 按文档上说应该不是上屏 canvas,不会与主域的上屏 canvas 冲突才对)
开放数据域的初始化启动流程和主域一样,会先创建一个 canvas 作为主 canvas,然后每帧会将内容渲染到该 canvas 上。
主域每帧会 post 消息到开放数据域,开放数据域再将主 canvas 上的内容 drawImage 到 sharedCanvas 上,然后主域将 sharedCanvas 渲染到主域的上屏 canvas 上。
现在闪屏的现象,感觉是开放数据域每帧绘制的 canvas 也会上屏,与主域的上屏 canvas 互相绘制,导致闪屏的。
不知道这个推测正不正确,望帮忙
老哥有没有研究出啥来,这个问题是怎么产生和解决呢?
又做了以下测试:在开放数据域启动时不执行初始化操作时,不会出现闪屏。然后通过主域 post 消息到开放数据域执行游戏的初始化操作,立即出现闪屏现象。
不清楚在开放数据域中执行什么行为,会导致闪屏现象呢?