ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cocos creator2.4.3 组件 节点 预制体

2021-06-30 03:31:27  阅读:225  来源: 互联网

标签:case cocos func flow break 组件 creator2.4 ._ 预制


一直没弄明白,这两者啥关系, 看了一下底层源码,大致知道了些。

 

一个组件必然会挂到node上。 在脚本组件中通过this.node.getComponent获取组件。creator 提供了this.getComponent 方法

    getComponent (typeOrClassName) {
        return this.node.getComponent(typeOrClassName);
    },

 

一个node由N个组件组成。通过this.getComponent获取组件

一个预制体由N个节点组成。  一个预制体相当于一个复杂点节点或者具有特殊功能的一个节点集合。 任何节点都可以预制,预制出来可以反复应用。

预制体可以包含其他预制体。

 

组件没有继承节点,组件不是节点, 如果把人比作节点,那么组件就是人的基因, 有什么特征完全靠组件支持。

cocos creator编辑器内置了很多组件, ccLable ccSprite等。

说到这里,得总结一下: N个组件组合成一个节点.    N个子节点组合成策划产品要的东东。 引擎核心就是渲染这个东东。

除了脚本组件, 基本上所有的组件都有自己的render.     如cc.Sprite render的是图片。  cc.Label draw的是文本字符串或者文字图像等

 

关于mainloop:

执行当前场景中所有组件的start, update, lateUpdate方法。

遍历节点树,开始渲染。 最终会用canvas或者opengles绘画

RenderFlow.render = function (rootNode, dt) {
    _batcher.reset();
    _batcher.walking = true;

    RenderFlow.visitRootNode(rootNode);

    _batcher.terminate();
    _batcher.walking = false;

    _forward.render(_batcher._renderScene, dt);
};

一个节点的处理流程和_renderFlag有关。

function createFlow (flag, next) {
    let flow = new RenderFlow();
    flow._next = next || EMPTY_FLOW;

    switch (flag) {
        case DONOTHING: 
            flow._func = flow._doNothing;
            break;
        case BREAK_FLOW:
            flow._func = flow._doNothing;
            break;
        case LOCAL_TRANSFORM: 
            flow._func = flow._localTransform;
            break;
        case WORLD_TRANSFORM: 
            flow._func = flow._worldTransform;
            break;
        case OPACITY:
            flow._func = flow._opacity;
            break;
        case COLOR:
            flow._func = flow._color;
            break;
        case UPDATE_RENDER_DATA:
            flow._func = flow._updateRenderData;
            break;
        case RENDER: 
            flow._func = flow._render;
            break;
        case CHILDREN: 
            flow._func = flow._children;
            break;
        case POST_RENDER: 
            flow._func = flow._postRender;
            break;
    }

    return flow;
}

 

标签:case,cocos,func,flow,break,组件,creator2.4,._,预制
来源: https://www.cnblogs.com/dzqdzq/p/14952695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有