/****************************************************************** * Copyright(C) 2019 - 2020 Nx Studio * * 视图绑定组件--显示控件 * * 2018.05.18 ******************************************************************/ const VBBase = require( "nx.vb.base" ); // 可见判别类型 const ShowType = cc.Enum( { None : 0, // 不显示 Role : 1, // Role显示 Bool : 3, // 布尔显示 EqualZero : 4, // 为0显示 EqualNum : 5, // 等于某个值 EmptyStr : 6, // 空字符串 } ); cc.Class( { extends: VBBase, properties: { bindKey: { default : "", displayName : "参数名", }, showType: { default : ShowType.None, type : ShowType, displayName : "显隐类型", tooptip : "参照nx.vb.base中的showType支持类型" }, isRevert: { default : false, displayName : "判定反转", }, equalValue : { default : "", displayName : "EqualNum时有效", }, }, // 编辑器特性 editor: { // 允许当前组件在编辑器模式下运行 executeInEditMode: false, // requireComponent 参数用来指定当前组件的依赖组件 requireComponent: null, // 当本组件添加到节点上后,禁止同类型(含子类)的组件再添加到同一个节点,防止逻辑发生冲突 disallowMultiple: true, // menu 用来将当前组件添加到组件菜单中,方便用户查找 menu: "Nx/视图|可视化", }, // 设定目标 setTarget: function( _tar, _key ) { this._super( _tar ); this.bindKey = _key || this.bindKey; if( this.target && nx.dt.strNEmpty( this.bindKey ) ) { this.target.vbind( this, [ [ this.bindKey, this._onValueChanged.bind( this ) ] ] ); } else { this.node.active = false; } }, // 改变通知 _onValueChanged: function( _now, _last ) { var visible = false; switch( this.showType ) { case ShowType.Role: { visible = _now; } break; case ShowType.Bool: { visible = _now; } break; case ShowType.EqualZero: { visible = ( _now == 0 ); } break; case ShowType.EqualNum: { visible = ( _now == this.equalValue ); } break; case ShowType.EmptyStr: { visible = nx.dt.strEmpty( _now ); } break; default: { } break; } if( this.isRevert ) { visible = !visible; } nx.gui.setActive( this.node, null, visible ); }, } );