奎特尔魔法总动员,你想来么?

奎特尔魔灵战士:

  • MagicSprite:可切换精灵,支持多语言
  • MagicLabel:可在string属性上写代码,支持多语言
  • MagicBoardLabel:带背景图,MagicSprite + MagicLabel
  • MagicProgress:进度条支持扇形、左右、上下,拖拽即可使用,无子节点
  • MagicQRCode:二维码组件,只有一个string属性,支持变色
  • MagicListView:可指定ItemPrefab,虚拟列表,无限itme
  • MagicBadge:通用红点标记,使用接收事件改变状态
  • MagicEventJoint:事件连接器,监听事件,可写代码
  • MagicTimer:定时器组件,源源不断发事件,可配合MagicEventJoint使用

https://mp.weixin.qq.com/s?__biz=MzA5MjEwOTI4Ng==&mid=2247483763&idx=1&sn=7d0d2521ecdac488b0bfdb303196d445&chksm=907361faa704e8ec3f8f6aadd6cae5a5ccf574c4c29c6ac3b958658aa96a6c38218085120af4#rd

2赞

献上源码地址: https://github.com/ShawnZhang2015/MagicComponent
目前还是初始阶段,只实现了部分组件和功能,只适合学习把玩,用于实际项目请谨慎!

MagicListView 这个组件什么时候会有

这个组件过年空闲时间增加上,没需求我没动力:sweat_smile:

顶了他丫的,6666666666666666666666666

楼下围观

有需求啊,需要优化性能,现在只能自己先尝试写一下

list 组建很有必要

仓库上有一个magiclistview的分支,有一个雏形,算法是借鉴Cocos官方范例demo的SceneList.js。
目前只有垂直方向滑动,listview中的item必须是一个prefab。

使用时需要一个DataSource对象,实现Item的更新。



let DataSource = cc.Class({
    array: null,
    ctor() {
        let array = [];
        for(let i = 0; i < 100; i++) {
            array.push(`测试文本 ${i}`);
        }
        this.array = array;
    },
    
    //需要实现onItemData这个方法,更新item内容
    onItemData(item, index) {
        item.getComponent(cc.Label).string = this.array[index];
    },

     //需要实现getCount这个方法,计算listview内容区域的高度
    getCount() {
        return this.array.length;
    }

});

let uikiller = require('uikiller');
cc.Class({
    extends: cc.Component,
    onLoad () {
        uikiller.bindComponent(this);
        this._magicListView.$MagicListView.dataSource = new DataSource();
    },
});

初始实例化Item的数量是根据MagicListView的高度计算出来的,以后会循环复用。
使用时需要将MagicListView配有一个prefab, 简单尝试的话将MagicListView.prefab拖到界面上即可
目前还比较丑陋,有需要的借鉴一下就是了。

MagicBadge 这个组件什么时候会有,这是很常见的需求

这个组件比较简单,主要思路是,给每个MagicBadge的实例配置一个字符串ID,
要想让这个Badge显示的时候,通过ID发消息,显示还是隐藏。

初版已经有了,我再测试下,提交gitbub。