123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import { _decorator, Component, EventTouch, Node, UITransform, Vec2, Vec3 } from 'cc';
- import { widget_base } from './widget_base';
- import { att_slide_data, widget_item_data } from '../../../data/data';
- import { config } from '../../config';
- import { gameManager } from '../gameManager';
- const { ccclass, property } = _decorator;
- @ccclass('widget_slide')
- export class widget_slide extends widget_base {
- @property(Node) img_zhaobutong:Node = null;
- private mSlideData:att_slide_data = null;
- private mStartClickPos:Vec2 = null;
- private mCurSlideNum:number = 0;
- private mSlideFinishUp:boolean = false;
- private mSlideFinishDown:boolean = false;
- private mSlideFinishLeft:boolean = false;
- private mSlideFinishRight:boolean = false;
- protected init(){
- if(this.mData.att.slide_data!=null){
- this.mSlideData = this.mData.att.slide_data
- }
- }
- protected start(): void {
- if(this.mIsActive){
- this.registeredEvent()
- }
- }
- protected registeredEvent(): void {
- if( !this.mSlideData ){
- return
- }
- this.node.on(Node.EventType.TOUCH_START,(et:EventTouch)=>{
- if(!this.mIsActive) return
- this.mStartClickPos = et.getUILocation()
- })
- if(this.mSlideData.slide_dir==config.slide_type.up_down||this.mSlideData.slide_dir==config.slide_type.left_right){
- this.node.on(Node.EventType.TOUCH_END,()=>{
- if(!this.mIsActive) return
- this.mSlideFinishUp = false;
- this.mSlideFinishDown = false;
- this.mSlideFinishLeft = false;
- this.mSlideFinishRight = false;
- })
- this.node.on(Node.EventType.TOUCH_MOVE,(et:EventTouch)=>{
- if(!this.mIsActive) return
- let isFinish = false;
- let distance = this.mSlideData.slide_distance;
- let et_ =et.getUILocation()
- let p = new Vec3(et_.x,et_.y)
- let pos = this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(p)
- switch (this.mSlideData.slide_dir) {
- case config.slide_type.up_down:
- let down_y = (this.node.position.y - distance*0.5);
- let up_y = (this.node.position.y + distance*0.5);
- if(pos.y>=up_y){
- this.mSlideFinishUp = true;
- }
- if(pos.y<=down_y){
- this.mSlideFinishDown = true;
- }
- if(this.mSlideFinishUp&&this.mSlideFinishDown){
- isFinish = true;
- this.mSlideFinishUp = false;
- this.mSlideFinishDown = false;
- }
- break;
- case config.slide_type.left_right:
- let left_x = (this.node.position.x - distance*0.5);
- let right_x = (this.node.position.x + distance*0.5);
- if(pos.x>=right_x){
- this.mSlideFinishRight = true;
- }
- if(pos.x<=left_x){
- this.mSlideFinishLeft = true;
- }
-
- if(this.mSlideFinishLeft&&this.mSlideFinishRight){
- isFinish = true;
- this.mSlideFinishLeft = false;
- this.mSlideFinishRight = false;
- }
- break;
- }
- if(isFinish){
- this.mCurSlideNum++;
- }
-
- if(this.mCurSlideNum>=this.mSlideData.slide_num){
- this.exeFinish()
- }
- })
- }else{
- this.node.on(Node.EventType.TOUCH_END,(et:EventTouch)=>{
- if(!this.mIsActive) return
- let isFinish = false;
- let endClickPos = et.getUILocation()
- switch (this.mSlideData.slide_dir) {
- case config.slide_type.up:
- if((endClickPos.y-this.mStartClickPos.y)>=this.mSlideData.slide_distance){
- isFinish = true;
- }
- break;
- case config.slide_type.down:
- if((this.mStartClickPos.y-endClickPos.y)>=this.mSlideData.slide_distance){
- isFinish = true;
- }
- break;
- case config.slide_type.left:
- if((this.mStartClickPos.x-endClickPos.x)>=this.mSlideData.slide_distance){
- isFinish = true;
- }
- break;
- case config.slide_type.right:
- if((endClickPos.x-this.mStartClickPos.x)>=this.mSlideData.slide_distance){
- isFinish = true;
- }
- break;
- }
- if(isFinish){
- this.exeFinish()
- }
-
- })
- }
- }
- public exeFinish(){
- if(this.checkOtherListenWidgetFinish()){
- this.onFinishEvent()
- }
- }
- checkOtherListenWidgetFinish(){
- let is_finish = true;
- if(this.mSlideData.other_widget_finish_listen_list==undefined){
- return true
- }
- if(this.mSlideData.other_widget_finish_listen_list.length<=0){
- return true;
- }
- let event_id = gameManager.Singleton.checkWidgetList(this.mSlideData.other_widget_finish_listen_list)
- if(event_id==-1){
- is_finish = true;
- }else{
- is_finish = false;
- gameManager.Singleton.exeEvent(event_id)
- }
- return is_finish;
- }
- public initSlide(){
- this.mCurSlideNum = 0;
- this.mSlideFinishUp = false;
- this.mSlideFinishDown = false;
- this.mSlideFinishLeft = false;
- this.mSlideFinishRight = false;
- }
- public showZhaoButongFinishStatus(): void {
- gameManager.Singleton.sys_click_correct_detail_music()
- this.img_zhaobutong.active = true;
- }
- public hideZhaoButongFinishStatus(): void {
- if(this.img_zhaobutong != null) {
- this.img_zhaobutong.active = false;
- }
- }
- }
|