attributes_drop.ts 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. import { _decorator, Component, EditBox, instantiate, Label, Node, Prefab, Size, Toggle } from 'cc';
  2. import { att_drag_data, other_widget_finish_listen_item } from '../../../data/data';
  3. import { other_drag_list_item } from './other_drag_list_item';
  4. import { other_widget_finish_item } from './other_widget_finish_item';
  5. const { ccclass, property } = _decorator;
  6. @ccclass('attributes_drop')
  7. export class attributes_drop extends Component {
  8. @property(EditBox) drag_width:EditBox = null;
  9. @property(EditBox) drag_height:EditBox = null;
  10. @property(EditBox) drag_x:EditBox = null;
  11. @property(EditBox) drag_y:EditBox = null;
  12. @property(Node) btn_is_err_back_pos:Node = null;
  13. @property(Node) lab_is_err_back_pos:Node = null;
  14. @property(Node) btn_add_other_drag_dis:Node = null;
  15. @property(Node) content:Node = null;
  16. @property(Prefab) other_drag_item:Prefab = null;
  17. @property(Node) btn_add_listen_other_widget_finish_event:Node = null;
  18. @property(Prefab) other_widget_finish_item:Prefab = null;
  19. @property(Node) other_widget_finish_content:Node = null;
  20. @property(Toggle) toggle_is_direct_execute_myself:Toggle = null;
  21. @property(Toggle) toggle_is_select_anyone_execute_myself:Toggle = null;
  22. private call_back = null;
  23. private _err_back_status_call = null;
  24. private _is_err_drag_back:boolean = false;
  25. private m_data:att_drag_data = null;
  26. public update_att(data:att_drag_data){
  27. this.m_data = data;
  28. this.drag_width.string = data.drag_size_width.toString()
  29. this.drag_height.string = data.drag_size_height.toString()
  30. this.drag_x.string = data.drag_pos_x.toString()
  31. this.drag_y.string = data.drag_pos_y.toString()
  32. this._is_err_drag_back = data.is_err_drag_back;
  33. this.lab_is_err_back_pos.getComponent(Label).string = this._is_err_drag_back ?"是":"否"
  34. this.onUpdateOtherDragList()
  35. if(this.m_data.other_widget_finish_listen_list==undefined){
  36. this.m_data.other_widget_finish_listen_list = []
  37. }
  38. this.other_widget_finish_content.removeAllChildren()
  39. for (let index = 0; index < this.m_data.other_widget_finish_listen_list.length; index++) {
  40. let item = instantiate(this.other_widget_finish_item)
  41. item.parent = this.other_widget_finish_content;
  42. let item_data = this.m_data.other_widget_finish_listen_list[index]
  43. item.getComponent(other_widget_finish_item).initView(item_data,this.onOtherWidgetFinishListenItemClickDelete.bind(this))
  44. }
  45. if(this.m_data.is_direct_execute_myself==undefined) {
  46. this.m_data.is_direct_execute_myself = false
  47. }
  48. if(this.m_data.is_select_anyone_execute_myself==undefined) {
  49. this.m_data.is_select_anyone_execute_myself = false
  50. }
  51. if(this.m_data.other_widget_finish_listen_list.length==0) {
  52. this.showOtherWidgetFinishListenToggle(false)
  53. } else {
  54. this.showOtherWidgetFinishListenToggle(true)
  55. }
  56. this.toggle_is_direct_execute_myself.isChecked = this.m_data.is_direct_execute_myself
  57. this.toggle_is_select_anyone_execute_myself.isChecked = this.m_data.is_select_anyone_execute_myself
  58. }
  59. protected start(): void {
  60. this.drag_width.node.on('editing-did-ended', this.change, this);
  61. this.drag_height.node.on('editing-did-ended', this.change, this);
  62. this.drag_x.node.on('editing-did-ended', this.change, this);
  63. this.drag_y.node.on('editing-did-ended', this.change, this);
  64. this.btn_is_err_back_pos.on(Node.EventType.TOUCH_END,()=>{
  65. if(this._err_back_status_call!=null){
  66. this._is_err_drag_back = !this._is_err_drag_back
  67. this._err_back_status_call(this._is_err_drag_back)
  68. this.lab_is_err_back_pos.getComponent(Label).string = this._is_err_drag_back?"是":"否"
  69. }
  70. })
  71. this.btn_add_other_drag_dis.on(Node.EventType.TOUCH_END,()=>{
  72. this.addOtherDragItem()
  73. })
  74. this.btn_add_listen_other_widget_finish_event.on(Node.EventType.TOUCH_END,()=>{
  75. this.addOtherWidgetFinishListenItem()
  76. })
  77. this.toggle_is_direct_execute_myself.node.on('toggle', ()=>{
  78. this.m_data.is_direct_execute_myself = this.toggle_is_direct_execute_myself.isChecked
  79. })
  80. this.toggle_is_select_anyone_execute_myself.node.on('toggle', ()=>{
  81. this.m_data.is_select_anyone_execute_myself = this.toggle_is_select_anyone_execute_myself.isChecked
  82. })
  83. }
  84. public initView(call,err_back_status_call){
  85. this.call_back = call;
  86. this._err_back_status_call = err_back_status_call;
  87. }
  88. showOtherWidgetFinishListenToggle(is_show:boolean) {
  89. this.toggle_is_direct_execute_myself.node.active = is_show
  90. this.toggle_is_select_anyone_execute_myself.node.active = is_show
  91. if(is_show==false) {
  92. this.m_data.is_direct_execute_myself = is_show
  93. this.m_data.is_select_anyone_execute_myself = is_show
  94. }
  95. }
  96. onUpdateOtherDragList() {
  97. this.content.removeAllChildren()
  98. if(this.m_data.other_drag_list==undefined){
  99. this.m_data.other_drag_list = []
  100. }
  101. for (let index = 0; index < this.m_data.other_drag_list.length; index++) {
  102. let item = instantiate(this.other_drag_item)
  103. item.parent = this.content;
  104. let item_data = this.m_data.other_drag_list[index]
  105. item.getComponent(other_drag_list_item).initView(index, this.m_data.other_drag_list.length, item_data,this.onOtherDragItemClickDelete.bind(this),this.onOtherDragItemUpDown.bind(this))
  106. }
  107. }
  108. addOtherWidgetFinishListenItem(){
  109. let item = instantiate(this.other_widget_finish_item)
  110. item.parent = this.other_widget_finish_content;
  111. let item_data = new other_widget_finish_listen_item;
  112. this.m_data.other_widget_finish_listen_list.push(item_data)
  113. 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))
  114. if(this.m_data.other_widget_finish_listen_list.length>0) {
  115. this.showOtherWidgetFinishListenToggle(true)
  116. }
  117. this.change()
  118. }
  119. onOtherWidgetFinishListenItemClickDelete(data:other_widget_finish_listen_item){
  120. let index = this.m_data.other_widget_finish_listen_list.indexOf(data)
  121. this.m_data.other_widget_finish_listen_list.splice(index,1)
  122. if(this.m_data.other_widget_finish_listen_list.length<=0) {
  123. this.showOtherWidgetFinishListenToggle(false)
  124. this.toggle_is_direct_execute_myself.isChecked = this.m_data.is_direct_execute_myself
  125. this.toggle_is_select_anyone_execute_myself.isChecked = this.m_data.is_select_anyone_execute_myself
  126. }
  127. this.change()
  128. }
  129. addOtherDragItem(){
  130. let item = instantiate(this.other_drag_item)
  131. item.parent = this.content;
  132. let item_data = new att_drag_data
  133. item_data.drag_pos_x = this.m_data.drag_pos_x+50;
  134. item_data.drag_pos_y = this.m_data.drag_pos_y;
  135. item_data.drag_size_width = this.m_data.drag_size_width;
  136. item_data.drag_size_height = this.m_data.drag_size_height;
  137. this.m_data.other_drag_list.push(item_data)
  138. let index = this.m_data.other_drag_list.length-1
  139. item.getComponent(other_drag_list_item).initView(index, this.m_data.other_drag_list.length, this.m_data.other_drag_list[index],this.onOtherDragItemClickDelete.bind(this),this.onOtherDragItemUpDown.bind(this))
  140. this.change()
  141. }
  142. onOtherDragItemClickDelete(data:att_drag_data){
  143. let index = this.m_data.other_drag_list.indexOf(data)
  144. this.m_data.other_drag_list.splice(index,1)
  145. this.change()
  146. }
  147. onOtherDragItemUpDown(item:other_drag_list_item, is_up:boolean) {
  148. let list = this.m_data.other_drag_list
  149. let c_index = item.getIndex()
  150. let c_data = list[c_index]
  151. let move_index=-1;
  152. if(is_up) {
  153. move_index = c_index - 1
  154. } else {
  155. move_index = c_index + 1
  156. }
  157. if(move_index == -1) {return}
  158. let move_data = list[move_index]
  159. list[c_index] = move_data
  160. list[move_index] = c_data
  161. this.onUpdateOtherDragList()
  162. this.change()
  163. }
  164. change(){
  165. this.m_data.drag_pos_x = parseInt(this.drag_x.string);
  166. this.m_data.drag_pos_y = parseInt(this.drag_y.string);
  167. this.m_data.drag_size_width = parseInt(this.drag_width.string);
  168. this.m_data.drag_size_height = parseInt(this.drag_height.string);
  169. if(this.call_back!=null){
  170. this.call_back(this.m_data)
  171. }
  172. }
  173. }