shl*_*jin 5 javascript pixi.js electron
我正在尝试在单独的进程中重新缩放一堆 PIXI.js 纹理,以便渲染 UI 线程保持响应。PIXI.js 与这个问题无关,但我想提供更多关于我正在做的事情的背景信息。
不幸的是,我无法让它发挥作用。起初,我尝试生成/分叉一个子进程,但结果证明我只能在父进程和分叉进程之间共享 JSON 编码的数据。真糟糕。
因此,我决定打开一个隐藏的浏览器窗口并在那里重新打包它们。
本质上,我在渲染过程中执行此操作:
// Start packing ... Say, urls.length > 1000, so it's quite a lot!
const textureArray = urls.map((url, i) => {
// get the texture (from cache, sync operation) + scale it
const texture = PIXI.Texture.fromImage(url, undefined, undefined, 0.3);
return texture;
});
// log data in the "hidden" window (I made it visible to access the logs, but it doesn't matter)
console.log("Done!")
console.log(textureArray)
// send to main process
ipcRenderer.send('textures', textureArray)
Run Code Online (Sandbox Code Playgroud)
打乒乓球主要流程:
ipcMain.on('textures', (event, data) => {
console.log("Got textures in the main")
// sending data to another window
mainWindow.webContents.send("textures", data)
})
Run Code Online (Sandbox Code Playgroud)
只需在第二个渲染器窗口(带有主 UI,我试图不阻止)中接收数据时记录数据。
现在,当我比较我发送的内容和收到的内容时,我注意到细微的变化:我收到的数据中缺少 HTML 元素。
我明白为什么会发生:我尝试发送的数据包含 DOM 元素的链接,而不是 DOM 元素本身,而且 IPC 协议似乎不知道如何序列化它。(以防万一,我要发送的数据不存在于 DOM 树中,而是在new Image()内部创建的)。
我的问题是,在电子窗口之间交换此类数据的方法是什么,或者也许还有另一种方法来解决我的问题?我将不胜感激任何帮助!
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |