import { _decorator, Button, Component, instantiate, Node, Prefab } from 'cc'; import { config } from '../../config'; import { add_animation_item } from './add_animation_item'; import { att_ani_data } from '../../../data/data'; import { Attributes } from '../Attributes'; import { tools } from '../../tools'; import { new_animation } from './new_animation'; import { edit_animation } from './edit_animation'; const { ccclass, property } = _decorator; @ccclass('add_animation') export class add_animation extends Component { @property(Node) content:Node = null; @property(Node) btn_close:Node = null; @property(Prefab) item_prefab:Prefab = null; @property(Node) btn_add_animation:Node = null; @property(Node) btn_delete_animation:Node = null; @property(Node) btn_edit_animation:Node = null; @property(Node) btn_select_server_animation:Node = null; @property(Node) btn_set_server_animation:Node = null; @property(Node) new_animation_node:Node = null; @property(Node) edit_animation_node:Node = null; private call_back = null; private m_list:att_ani_data[] = [] private cur_select:add_animation_item = null; public show(list:att_ani_data[],call){ this.call_back = call; this.m_list = list; this.updateView() this.btn_close.on(Node.EventType.TOUCH_END,()=>{ this.close() }) this.btn_edit_animation.on(Node.EventType.TOUCH_END,()=>{ if(this.m_list.length<=0){ return tools.showToast("无动画可编辑!") } this.edit_animation_node.getComponent(edit_animation).show(this.cur_select.getData()) }) this.new_animation_node.getComponent(new_animation).initView(this.onCreateAni.bind(this)) this.btn_add_animation.on(Node.EventType.TOUCH_END,()=>{ this.new_animation_node.getComponent(new_animation).show(this.m_list.length, Attributes.Singleton.get_cur_att_data().id) }) this.btn_delete_animation.on(Node.EventType.TOUCH_END,()=>{ if(this.m_list.length<=0){ return tools.showToast("无动画可删除!") } tools.show_dialog("是否删除当前选中的动画?",()=>{ this.m_list.splice(this.cur_select.getIndex(),1) this.updateView() // this.cur_select.node.removeFromParent() // if(this.m_list.length<=0){ // this.btn_delete_animation.getComponent(Button).interactable = false; // }else{ // this.cur_select = this.content.children[this.content.children.length-1].getComponent(add_animation_item) // this.cur_select.selectStatus() // } if(this.call_back!=null){ this.call_back(this.m_list) } }) }) this.btn_edit_animation.getComponent(Button).interactable = list.length<=0?false:true this.btn_delete_animation.getComponent(Button).interactable = list.length<=0?false:true this.btn_select_server_animation.on(Node.EventType.TOUCH_END, ()=>{ tools.requestGetAnimationList((ani_list)=>{ if(ani_list.length==0) { return tools.showToast('服务器还没有动画列表') } tools.show_select_animation_delete_list(ani_list,(item:att_ani_data)=>{ if(this.m_list.length>0) { let end_item = this.m_list[this.m_list.length-1] item.ani_id = end_item.ani_id + 1 } this.onCreateAni(item) }) }) }) this.btn_set_server_animation.on(Node.EventType.TOUCH_END, ()=>{ if(this.cur_select==null) { return tools.showToast('还没有动画') } let cur_data = this.cur_select.getData() if(cur_data==null) { return tools.showToast('请选择当前的动画') } tools.requestAddAnimationToAnimationList(cur_data) }) } updateView(){ this.content.removeAllChildren() for (let index = 0; index < this.m_list.length; index++) { const element = this.m_list[index]; let item = instantiate(this.item_prefab) item.parent = this.content; item.getComponent(add_animation_item).initView(element,this.onItemClick.bind(this),index) if(index===0){ item.getComponent(add_animation_item).selectStatus() this.cur_select = item.getComponent(add_animation_item); } } } onCreateAni(d:att_ani_data){ this.m_list.push(d) this.updateView() this.btn_edit_animation.getComponent(Button).interactable = this.m_list.length<=0?false:true this.btn_delete_animation.getComponent(Button).interactable = this.m_list.length<=0?false:true if(this.call_back!=null){ this.call_back(this.m_list) } } onItemClick(item:add_animation_item){ for (let index = 0; index < this.content.children.length; index++) { const element = this.content.children[index]; element.getComponent(add_animation_item).unSelectStatus() } item.selectStatus() this.cur_select = item; this.btn_edit_animation.getComponent(Button).interactable = true; this.btn_delete_animation.getComponent(Button).interactable = true } close(){ this.node.destroy() } }