event_stop_active_event.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { _decorator, Component, instantiate, Label, Node, Prefab } from 'cc';
  2. import { attributes_data, event_stop_active_event_item, event_widget_more_event_item, widget_item_data } from '../../../data/data';
  3. import { Attributes } from '../Attributes';
  4. import { tools } from '../../tools';
  5. import { ClientEvent } from '../../clientEvent';
  6. import { config } from '../../config';
  7. import { edit_event_more_item } from './edit_event_more_item';
  8. const { ccclass, property } = _decorator;
  9. @ccclass('event_stop_active_event')
  10. export class event_stop_active_event extends Component {
  11. private m_data:event_stop_active_event_item = null;
  12. @property(Node) btn_select_ui:Node = null;
  13. @property(Node) lab_name:Node = null;
  14. @property(Node) btn_more:Node = null;
  15. @property(Node) content:Node = null;
  16. @property(Prefab) item_more_prefab:Prefab = null;
  17. protected start(): void {
  18. this.btn_more.on(Node.EventType.TOUCH_END, ()=> {
  19. this.onClickMoreBtn()
  20. },this)
  21. }
  22. public initView(data:event_stop_active_event_item){
  23. this.m_data = data;
  24. this.btn_select_ui.on(Node.EventType.TOUCH_END,()=>{
  25. let list = Attributes.Singleton.get_cur_scene_all_only_widget()
  26. if(list.length<=0){
  27. return tools.showToast("当前场景没有添控件!")
  28. }
  29. tools.show_select_widget_list(list,(item:widget_item_data)=>{
  30. this.m_data.binding_widget_id = item.att.id;
  31. this.updateStatus()
  32. },this.m_data.binding_widget_id)
  33. })
  34. this.updateStatus()
  35. this.updateMoreListStatus()
  36. ClientEvent.on(config.Event.UpdateAttributesToView,this.UpdateAttributesToView,this)
  37. }
  38. protected onDestroy(): void {
  39. ClientEvent.off(config.Event.UpdateAttributesToView,this.UpdateAttributesToView,this)
  40. }
  41. UpdateAttributesToView(data:attributes_data,update_type:string){
  42. if(update_type===config.attributes_list_type.delete) {
  43. if(this.m_data.binding_widget_id===data.id){
  44. this.m_data.binding_widget_id = -1;
  45. this.updateStatus()
  46. }
  47. let is_have = false
  48. for(let i=0;i<this.m_data.binding_widget_list.length;i++) {
  49. const element = this.m_data.binding_widget_list[i]
  50. if(element.binding_widget_id===data.id) {
  51. element.binding_widget_id = -1;
  52. is_have = true
  53. }
  54. }
  55. if(is_have) {
  56. this.updateMoreListStatus()
  57. }
  58. }
  59. }
  60. updateStatus(){
  61. this.lab_name.getComponent(Label).string = this.m_data.binding_widget_id===-1?"当前选择停用激活的控件":`当前选择停用激活的控件id:${this.m_data.binding_widget_id}`
  62. }
  63. onClickMoreBtn() {
  64. let list = Attributes.Singleton.get_cur_scene_all_only_widget()
  65. if(list.length<=0){
  66. return tools.showToast("当前场景没有添控件!")
  67. }
  68. tools.show_select_widget_list(list,(item:widget_item_data)=>{
  69. if(item.att.id == this.m_data.binding_widget_id) {
  70. return
  71. }
  72. var have_index:number = -1
  73. for(let i=0; i<this.m_data.binding_widget_list.length; i++) {
  74. const element = this.m_data.binding_widget_list[i]
  75. if(element.binding_widget_id == item.att.id) {
  76. have_index = i
  77. break
  78. }
  79. }
  80. if(have_index!=-1) {
  81. this.m_data.binding_widget_list.splice(have_index,1)
  82. }
  83. let more_item = new event_widget_more_event_item
  84. more_item.binding_widget_id = item.att.id
  85. more_item.binding_widget_remark = item.att.remark
  86. this.m_data.binding_widget_list.push(more_item)
  87. this.updateMoreListStatus()
  88. },this.m_data.binding_widget_id)
  89. }
  90. updateMoreListStatus() {
  91. if(this.m_data.binding_widget_list==undefined) {
  92. this.m_data.binding_widget_list = []
  93. }
  94. this.content.removeAllChildren()
  95. for(let index = 0; index < this.m_data.binding_widget_list.length; index ++) {
  96. const element = this.m_data.binding_widget_list[index]
  97. let item = instantiate(this.item_more_prefab);
  98. item.parent = this.content;
  99. item.getComponent(edit_event_more_item).initView(element, ()=>{
  100. this.m_data.binding_widget_list.splice(index,1)
  101. this.updateMoreListStatus()
  102. })
  103. }
  104. }
  105. }