attributes_question_select.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { _decorator, Component, instantiate, Node, Prefab } from 'cc';
  2. import { att_question_select, ui_att_item } from '../../../data/data';
  3. import { question_btn_info } from './question_btn_info';
  4. import { config } from '../../config';
  5. const { ccclass, property } = _decorator;
  6. @ccclass('attributes_question_select')
  7. export class attributes_question_select extends Component {
  8. @property(Node) content:Node = null;
  9. @property(Prefab) itemPb:Prefab = null;
  10. @property(Node) btn_add:Node = null;
  11. private call_back = null;
  12. private m_data:att_question_select = null;
  13. public initView(call){
  14. this.call_back = call;
  15. this.btn_add.on(Node.EventType.TOUCH_END,()=>{
  16. this.addBtn()
  17. })
  18. }
  19. change(){
  20. if(this.call_back!=null){
  21. this.call_back(this.m_data)
  22. }
  23. }
  24. addBtn(){
  25. let item = instantiate(this.itemPb)
  26. item.parent = this.content;
  27. let data = new ui_att_item
  28. data.width = 348;
  29. data.height = 164;
  30. data.x = 100;
  31. data.y = 100;
  32. this.m_data.btn_question_list.push(data)
  33. this.update_att(this.m_data)
  34. this.change()
  35. }
  36. onItemDelete(index:number){
  37. this.m_data.btn_question_list.splice(index,1)
  38. this.change()
  39. }
  40. public update_att(data:att_question_select){
  41. this.m_data = data;
  42. this.content.removeAllChildren()
  43. if(this.content.children.length===this.m_data.btn_question_list.length){
  44. for (let index = 0; index < this.content.children.length; index++) {
  45. const element = this.content.children[index];
  46. element.getComponent(question_btn_info).initView(this.m_data.btn_question_list[index],index,this.onItemDelete.bind(this),config.attributes_list_type.question_select)
  47. }
  48. }else{
  49. for (let index = 0; index < this.m_data.btn_question_list.length; index++) {
  50. let item = instantiate(this.itemPb)
  51. item.parent = this.content
  52. item.getComponent(question_btn_info).initView(this.m_data.btn_question_list[index],index,this.onItemDelete.bind(this),config.attributes_list_type.question_select)
  53. }
  54. }
  55. }
  56. }