87 lines
2.3 KiB
JavaScript
87 lines
2.3 KiB
JavaScript
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);
|
|
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
} ); |