attributes_click.ts 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { _decorator, Component, EditBox, instantiate, Label, Node, Prefab, Toggle } from 'cc';
  2. import { att_click_data, other_widget_finish_listen_item } from '../../../data/data';
  3. import { config } from '../../config';
  4. import { tools } from '../../tools';
  5. import { other_widget_finish_item } from './other_widget_finish_item';
  6. const { ccclass, property } = _decorator;
  7. @ccclass('attributes_click')
  8. export class attributes_click extends Component {
  9. @property(Node) btn_finish_event:Node = null;
  10. @property(Node) btn_click_type:Node = null;
  11. @property(Node) lab_click_type:Node = null;
  12. @property(Node) click_hold_time:Node = null;
  13. @property(Node) multiple_clicks_num:Node = null;
  14. @property(EditBox) edit_click_hold_time:EditBox = null;
  15. @property(EditBox) edit_multiple_clicks_num:EditBox = null;
  16. @property(Node) btn_add_listen_other_widget_finish_event:Node = null;
  17. @property(Prefab) other_widget_finish_item:Prefab = null;
  18. @property(Node) other_widget_finish_content:Node = null;
  19. @property(Toggle) toggle_is_direct_execute_myself:Toggle = null;
  20. @property(Toggle) toggle_is_select_anyone_execute_myself:Toggle = null;
  21. private call_back = null;
  22. private m_data:att_click_data = null;
  23. public initView(call){
  24. this.call_back = call;
  25. this.btn_click_type.on(Node.EventType.TOUCH_END,()=>{
  26. tools.show_click_type_select((type:number)=>{
  27. this.m_data.click_type = type;
  28. this.update_att(this.m_data)
  29. this.change()
  30. })
  31. })
  32. }
  33. protected start(): void {
  34. this.edit_click_hold_time.node.on('editing-did-ended', this.change, this);
  35. this.edit_multiple_clicks_num.node.on('editing-did-ended', this.change, this);
  36. this.btn_add_listen_other_widget_finish_event.on(Node.EventType.TOUCH_END,()=>{
  37. this.addOtherWidgetFinishListenItem()
  38. })
  39. this.toggle_is_direct_execute_myself.node.on('toggle', ()=>{
  40. this.m_data.is_direct_execute_myself = this.toggle_is_direct_execute_myself.isChecked
  41. })
  42. this.toggle_is_select_anyone_execute_myself.node.on('toggle', ()=>{
  43. this.m_data.is_select_anyone_execute_myself = this.toggle_is_select_anyone_execute_myself.isChecked
  44. })
  45. }
  46. addOtherWidgetFinishListenItem(){
  47. let item = instantiate(this.other_widget_finish_item)
  48. item.parent = this.other_widget_finish_content;
  49. let item_data = new other_widget_finish_listen_item;
  50. this.m_data.other_widget_finish_listen_list.push(item_data)
  51. item.getComponent(other_widget_finish_item).initView(this.m_data.other_widget_finish_listen_list[this.m_data.other_widget_finish_listen_list.length-1],this.onOtherWidgetFinishListenItemClickDelete.bind(this))
  52. if(this.m_data.other_widget_finish_listen_list.length>0) {
  53. this.showOtherWidgetFinishListenToggle(true)
  54. }
  55. this.change()
  56. }
  57. onOtherWidgetFinishListenItemClickDelete(data:other_widget_finish_listen_item){
  58. let index = this.m_data.other_widget_finish_listen_list.indexOf(data)
  59. this.m_data.other_widget_finish_listen_list.splice(index,1)
  60. if(this.m_data.other_widget_finish_listen_list.length<=0) {
  61. this.showOtherWidgetFinishListenToggle(false)
  62. this.toggle_is_direct_execute_myself.isChecked = this.m_data.is_direct_execute_myself
  63. this.toggle_is_select_anyone_execute_myself.isChecked = this.m_data.is_select_anyone_execute_myself
  64. }
  65. this.change()
  66. }
  67. change(){
  68. if(this.call_back!=null){
  69. this.m_data.hold_time = parseInt(this.edit_click_hold_time.string)
  70. this.m_data.multiple_check_num = parseInt(this.edit_multiple_clicks_num.string)
  71. this.call_back(this.m_data)
  72. }
  73. }
  74. public update_att(data:att_click_data){
  75. this.m_data = data;
  76. this.edit_click_hold_time.string = this.m_data.hold_time .toString()
  77. this.edit_multiple_clicks_num.string = this.m_data.multiple_check_num .toString()
  78. if(this.m_data.click_type===config.clcik_type.click){
  79. this.click_hold_time.active = false;
  80. this.multiple_clicks_num.active = false;
  81. }else if(this.m_data.click_type===config.clcik_type.Press_and_hold){
  82. this.multiple_clicks_num.active = false;
  83. this.click_hold_time.active = true;
  84. }else if(this.m_data.click_type===config.clcik_type.Multiple_clicks){
  85. this.multiple_clicks_num.active = true;
  86. this.click_hold_time.active = false;
  87. }
  88. if(this.m_data.other_widget_finish_listen_list==undefined){
  89. this.m_data.other_widget_finish_listen_list = []
  90. }
  91. this.lab_click_type.getComponent(Label).string =config.clcik_type_map.get(this.m_data.click_type)
  92. this.other_widget_finish_content.removeAllChildren()
  93. for (let index = 0; index < this.m_data.other_widget_finish_listen_list.length; index++) {
  94. let item = instantiate(this.other_widget_finish_item)
  95. item.parent = this.other_widget_finish_content;
  96. let item_data = this.m_data.other_widget_finish_listen_list[index]
  97. item.getComponent(other_widget_finish_item).initView(item_data,this.onOtherWidgetFinishListenItemClickDelete.bind(this))
  98. }
  99. if(this.m_data.is_direct_execute_myself==undefined) {
  100. this.m_data.is_direct_execute_myself = false
  101. }
  102. if(this.m_data.is_select_anyone_execute_myself==undefined) {
  103. this.m_data.is_select_anyone_execute_myself = false
  104. }
  105. if(this.m_data.other_widget_finish_listen_list.length==0) {
  106. this.showOtherWidgetFinishListenToggle(false)
  107. } else {
  108. this.showOtherWidgetFinishListenToggle(true)
  109. }
  110. this.toggle_is_direct_execute_myself.isChecked = this.m_data.is_direct_execute_myself
  111. this.toggle_is_select_anyone_execute_myself.isChecked = this.m_data.is_select_anyone_execute_myself
  112. }
  113. showOtherWidgetFinishListenToggle(is_show:boolean) {
  114. this.toggle_is_direct_execute_myself.node.active = is_show
  115. this.toggle_is_select_anyone_execute_myself.node.active = is_show
  116. if(is_show==false) {
  117. this.m_data.is_direct_execute_myself = is_show
  118. this.m_data.is_select_anyone_execute_myself = is_show
  119. }
  120. }
  121. }