早期Cocos组件化思想的框架,拿出来祭奠一下

前言

   不要被这牛逼的标题吓到,通俗的讲就是当时在设计这款框架的时候Cocos大家庭中还没有CocosCreator编辑器, 有的小伙伴可能想问有没有现在的Creator牛逼,我可以很负责任的说没有, 毕竟这个框架先于Creator诞生的, 但我仍然还可以很负责任的说我当时在编写这款框架的时候绝对的用心并且对原有的引擎做了一定量的定制改造,结合了Unity组件化思想,结合了NodeJs的事件管理机制, 里面的一些设计思想对我至今都很受益。

框架预览

cocosjs前端框架 2.png

框架简介【Fdt】Foundation的缩写

支持模块儿化开发, 避免全局命名冲突、易于维护。
组件化开发, 能像U3D一样为某个节点添加组件。
提供了新的事件系统, 可以非常容易的绑定类的方法, 方便好用。
一个网络管理器
一个数据中心
一个完整的UI管理系统

引擎修改前后对比

fdtcocos框架 2.png

脚本加载流程改造

   代码加载流程遵循模块化思想在CommonJs方式下做了一定量的封装改造,重写了require方法改为了include加载流程,所有的代码单元只需要__greturn包装器进行包装即可实现加载, 使用起来及其方便。

在项目入口app.js头部添加

require("src/fdt/Init.js")
include("src/FDTApp.js")

显示UI逻辑

this.uiMgr.push(UIP.Main);

UIP定义如下

__greturn = function (module) {
   UIP = {
      Main : CreateUIP("res/Main.json", "src/ui/UIMain.js")
   }
}

UIMain.js如下:

__greturn = function (module) {
    var UIMain = UIBehaviour.extend("UIMain", {

      awake: function () {
        /* 支持了节点可以挂载脚本, 这在当时cocos时代是没有的哦 */
        this.node.findNode("Button_1").addComp("test/MoveH.js");
        /* Node扩展了onClick方法 */
        this.node.findNode("Button_1").onClick(this.changeClick, this);
        /* 对scrollView全方位的重写支持组件的方式并支持分页、回收缓存 */
        let c = this.contentView.addComp("fdt/comctrl/GridList.js", {
            itemPrefab: { path: "testScrollview.json", script: "test/UIPTestScrollView.js" },
            itemWidth: 400,
            itemHeight: 30,
            column: 1,
            row: 10,
            spacing: { left: 0, right: 0, top: 0, bottom: 0 },
            dir: ccui.ScrollView.DIR_VERTICAL,
            isBounceEnabled: false,
            scrollBarEnabled: false,
            layoutCallback: function (st) {
                st.sort(function (a, b) { return a.id > b.id; });
            }
        });
        /* 创建10页 */
        for (var k = 1; k <= 10; ++k) {
            c.addPage(k, true);
        }
        c.setCurPage(1);
        c.selectItem(1, 0);
     },

     onInit: function () {
        cc.log('onInit......')
     },

     onUnInit: function () {
        cc.log('onUnInit......')
     },

     onEnable: function () {
        cc.log('onEnable......')
     },

     onDisable: function () {
        cc.log('onDisable......')
     },

     onDestroy: function () {
        cc.log('onDestroy......')
     }
  });

  module.exports = UIMain;
}


效果预览

QQ20210706220910HD.gif

下载链接

Fdt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值