soluna 使用 facebook/yoga 作为排版工具。这个工具是 react native 的基础设施,仅仅是负责排版,不负责渲染。在 soluna 中,我们可以用 datalist 描述排版,然后将其载入到 yoga 中,生成一个 node, 接着根据 node 结构来生成渲染指令。这里的渲染指令是指传入 batch:add 的参数。因为实际渲染都是通过 batch 来实现的。关于 batch:add 函数的 api 的函数签名描述如下:

- batch:add(obj [, x [, y]])
- obj 可以是: 正整数 sprite id;材质模块返回的 userdata(例如 matquad.quad、mattext.block(…) 的结果);或已经打包好的二进制流。附带坐标则先平移后提交。

可以说是很简单了,把材质和坐标放进去就可以绘制。
但是正因为如此简单,如果我们要直接使用它来绘制整个画面,将会较为复杂。这就是为什么我们需要一个排版工具。这个排版工具实际上就是通过一系列抽象,使得我们在设计某些具体细节时,不需要关注全局。最后通过一次 calc 计算,替我们计算某个节点的全局坐标,这样我们就可以较为轻松的绘制。当然,如果有别的排版工具,也完全可以不使用 yoga 进行排版,这不是一个必要条件。
 
 
Back to Top