cc.Class( { extends: cc.Component, properties: { maxCount: { default: 10, displayName: "上限" }, fabItem: { default: null, type: cc.Prefab, displayName: "道具预制" }, tag_key:{ default:"", displayName:"标签" } }, // 编辑器特性 editor: { // 允许当前组件在编辑器模式下运行 executeInEditMode: false, // 当本组件添加到节点上后,禁止同类型(含子类)的组件再添加到同一个节点,防止逻辑发生冲突 disallowMultiple: false, // requireComponent 参数用来指定当前组件的依赖组件 requireComponent: cc.Layout, }, // 重建列表 // [[id,count]] rebuild: function( _items , selfCallBack = null) { // 清空 if( nx.dt.arrEmpty( _items ) ) { nx.pools.putChildren( this.node ); return; } // 重建 nx.gui.hideAllChildren( this.node, "" ); let pool = nx.pools.getPool( this.fabItem.name, this.fabItem ); let max = Math.min( _items.length, this.maxCount ); for( let i = 0; i < max; ++i ) { let node = this.node.children[ i ]; if( !node ) { node = pool.get(); node.parent = this.node; let cmp = nx.gui.getComponent(this,"",cc.Layout); if(cmp.type == cc.Layout.Type.HORIZONTAL){ node.y = 0; }else if(cmp.type == cc.Layout.Type.VERTICAL){ node.x = 0; } } node.active = true; let item = _items[ i ]; let cmp = node.getComponent( "nx.fx.sv.expand.item" ); cmp.sort_index = i; // 基础规则参数 if( nx.dt.arrNEmpty( item ) ) { cmp.setData( item[ 0 ], item[ 1 ] ,this.tag_key); } else { // 否则视为data2Icon统一数据格式 cmp.setData( item ,null,this.tag_key); } //设置单例点击回调 if(cmp.setSelectCall && selfCallBack){ cmp.setSelectCall(selfCallBack); } } }, } );