关于Label的渲染流程,有点疑问

有个疑问,请大大们帮忙看下,渲染过程分为Visit和Render两个过程,按照正常的理解比如Label的文本fillText的调用应该是在Render阶段来做,但是源码却在Visit内部的某一个UpdateRenderData里面来做,Visit不是只做model的构建吗?

老哥没啥问题吧?render-componet-walker 在visit的时候确实是来构建model的啊 关于updateRenderData也不会去渲染啊,只是更新渲染数据

但是在label的updateRenderData内部会调用对应ttf的updateRenderData这个,这个内部调用了canvas 2d的fillText接口,这个就是在画板上绘制一个文字吧。

具体这个流程我还真没追,兄弟这样,你断点看下。。你说的那能走到么

我是把2.0的分支源码下载下来看的,不知道怎么调试呢?

运行 cocos2d-x/tools/simulator/frameworks/runtime-src 下面的工程就能调试.

多谢,我试试。

不对,我要运行的是H5版本的Cocos-Engine源代码,不是Native版本项目。


新建了一个项目 追了下这个流程 发现确实 label 会走到这个fillText函数里,然后搜了下这个函数在原来javascript以及web的用法。。我也被搞懵逼了

嗯,这个地方的_context是通过doccument.createElement(“Cavas”)创建出来的Cavas获取2d的context。比较奇怪的是startPosition是(0,0),证明后面应该有个地方将这个cavas放置到某个位置上,但是也没找到呢?懵逼中。

@jare @panda 大佬,求帮忙解惑 - - 么么哒

哇 这就沉了么 老哥

你是怎么调试的,我用webstrom打开源码,但是不知道怎么创建项目去调试engine代码。

直接浏览器啊。。。

通过Cocos Creator构建后,会把engine代码压缩成一个文件吧。

不用。。老铁你新建个工程浏览器泡一下 ,然后 打开chrome的调试工具 就可以了啊

懂了,知道怎么调试了,多谢老哥。

所以 老哥 知道结果了么

在visit里filltext是有什么问题?

逻辑没问题,就是按照初始的设计,visit只会生成model,render才做渲染,有点小疑问而已。