import { _decorator, Color, Component, instantiate, misc, Node, Prefab, ScrollView, Size, Sprite, tween, Tween, UIOpacity, UITransform, Vec3, Widget } from 'cc'; import { ani_frame, att_ani_data, attributes_data, event_item, event_item_delete_drag_other, guo_ju_qing_dai_dao_ju, scene_item_data, widget_item_data, zhao_xi_jie_data, zhao_xi_jie_item_data } from '../../data/data'; import { config } from '../config'; import { tools } from '../tools'; import { gameManager } from './gameManager'; import { widget_base } from './widget/widget_base'; import { ClientEvent } from '../clientEvent'; import { widget_drag } from './widget/widget_drag'; const { ccclass, property } = _decorator; class BindTarget{ color : Color; opacity:number; size:Size; pos:Vec3; rotation:number; anchorPointX:number; anchorPointY:number; } @ccclass('scene_page') export class scene_page extends Component { @property(Node) scroll_view:Node = null; @property(Node) content:Node = null; @property(Node) maskView:Node = null; @property(Prefab) widget_click_prefab:Prefab = null; @property(Prefab) widget_drag_prefab:Prefab = null; @property(Prefab) widget_slide_prefab:Prefab = null; @property(Prefab) widget_img_prefab:Prefab = null; @property(Prefab) widget_animation_prefab:Prefab = null; private mData:scene_item_data = null; private mIsMask:boolean = false; private mSceneAtt:attributes_data = null; private mWidgetList:Map = new Map; private bindTarget:BindTarget = null; protected mAnimationList:att_ani_data[] = []; //动画组 protected mCurRunAnimation:ani_frame[] = []; protected mCurAnimation:att_ani_data = null; protected mPlayStatus:boolean = false; public initView(page_data:scene_item_data){ this.mData = page_data; this.mIsMask = this.mData.is_check_mask; this.mSceneAtt = this.mData.att; if(this.mData.is_full_screen){ this.content.getComponent(Widget).enabled = true; }else{ this.content.getComponent(Widget).enabled = false; } this.content.position = Vec3.ZERO; this.mAnimationList = this.mSceneAtt.animation_list; console.log("scene_page this.mAnimationList", this.mAnimationList) if(this.mIsMask){ this.maskView.active = true; }else{ this.maskView.active = false; } this.initViewAtt() ClientEvent.on(config.EventRun.NOTICE_EVENT,this.widgetBeActive.bind(this),this) ClientEvent.on(config.EventRun.SHOW_ZHAO_BU_TONG_FINISH_STATUS,this.on_zhao_bu_tong_finish.bind(this),this) ClientEvent.on(config.EventRun.ON_ZHAO_BU_TONG_ALL_FINISH,this.on_zhao_bu_tong_all_finish.bind(this),this) } public checkFinish(widget_id:number):boolean{ let widget = this.mWidgetList.get(widget_id) if(!widget){ tools.showToast("配置监听其他控件错误") return true } return widget.getComponent(widget_base).getIsFinish(); } public checkShow(widget_id:number):boolean{ let widget = this.mWidgetList.get(widget_id) if(!widget){ return true } return widget.getComponent(widget_base).getIsShow(); } protected onDestroy(): void { this.mWidgetList.clear() ClientEvent.off(config.EventRun.SHOW_ZHAO_BU_TONG_FINISH_STATUS,this.on_zhao_bu_tong_finish.bind(this),this) ClientEvent.off(config.EventRun.ON_ZHAO_BU_TONG_ALL_FINISH,this.on_zhao_bu_tong_all_finish.bind(this),this) ClientEvent.off(config.EventRun.NOTICE_EVENT,this.widgetBeActive.bind(this),this) } widgetBeActive(widgetId:number,event:event_item){ let item = this.mWidgetList.get(widgetId) if(item){ item.getComponent(widget_base).beActive(widgetId,event) } console.log("scene_page =",event.type) if(event.type===config.event_type.scene_ani){ let ani_id = event.event_item_scene_ani.ani_id; this.mCurAnimation = this.getAniById(ani_id) if(this.mCurAnimation){ this.mCurRunAnimation = this.mCurAnimation.ani_frame_list; if(this.mCurRunAnimation.length<2){ }else{ this.runAnimation() } }else{ return tools.showToast(`错误的动画配置!id:${this.mData.att.id}-请检查`) } }else if(event.type===config.event_type.delete_drag_other_data){ this.eventDeleteDragOtherData(event) }else if(event.type===config.event_type.active_event) { let data = event.event_item_active_event_data this.eventMoreBindingWidgetList(data, event) }else if(event.type===config.event_type.stop_active_event) { let data = event.event_item_stop_active_event_data this.eventMoreBindingWidgetList(data, event) }else if(event.type===config.event_type.hide) { let data = event.event_item_hide_data this.eventMoreBindingWidgetList(data, event) } } eventDeleteDragOtherData(event:event_item){ let wd = event.event_item_delete_drag_other_data.widget_id let index = event.event_item_delete_drag_other_data.delete_drag_other_index let other_widget_list = event.event_item_delete_drag_other_data.widget_list if(other_widget_list.length==0) { let item = this.mWidgetList.get(wd) if(item){ item.getComponent(widget_drag).deleteOtherDrag(index) }else{ // tools.showToast("删除拖拽目标配置错误!") } } else { let data_list:event_item_delete_drag_other[] = JSON.parse(JSON.stringify(other_widget_list)) let first_data = new event_item_delete_drag_other first_data.widget_id = wd first_data.delete_drag_other_index = index data_list.unshift(first_data) var data_map:Map = new Map; for(let i=0;i