xx há 1 ano atrás
pai
commit
e2ff41ceb0

+ 19 - 2
assets/data/data.ts

@@ -49,6 +49,7 @@ export class att_ani_data{ //动画属性
     public ani_id:number = 0; //动画id
     public ani_name:string = ""; //动画名字
     public isLoop:boolean = false;//是否循环
+    public isMove:boolean = true; //是否移動
     public binding_widget_id:number =0; //哪个控件
     public ani_frame_list:ani_frame[] = [];//动画帧
 }
@@ -75,6 +76,12 @@ export class att_drag_data{
     public other_event_id:number = -1; //其他拖拽的完成事件
     public is_err_drag_back:boolean = true; //拖拽错误是否回归原位
     public other_drag_list:att_drag_data[] = [];
+    public other_widget_finish_listen_list:other_widget_finish_listen_item[] = [];
+}
+
+export class other_widget_finish_listen_item{
+    public event_id:number = -1;
+    public widget_id:number = -1;
 }
 
 export class att_slide_data{
@@ -93,6 +100,7 @@ export class att_text_sound_data{
     public sound_data:bag_item_data = null;
     public text:string = '';
     public pos_y:number = 0;
+    public is_open_click_close:boolean = true;
 }
 
 export class scene_tips_rule_data{
@@ -362,7 +370,8 @@ export class event_item{
 
     public event_item_show_scene_title_data:event_item_show_scene_title = null; //场景标签
     public event_item_scene_ani:event_item_scene_ani = null; //场景动画
-
+    public event_item_delete_drag_other_data:event_item_delete_drag_other = null; //删除其他拖拽的目标
+    public event_item_stop_play_loop_sound_data:event_item_stop_play_loop_sound = null; //停止播放一个音效资源
 }
 export class base_event_item{
 
@@ -379,9 +388,18 @@ export class event_item_show_scene_title {
 export class event_item_scene_ani {
     public ani_id:number = -1;
 }
+export class event_item_stop_play_loop_sound{
+    public res:string = "";
+}
+export class event_item_delete_drag_other {
+    public widget_id:number = -1;
+    public delete_drag_other_index:number = -1;
+}
 
 export class event_item_play_sound { //播放一个音效
     public sound_res:bag_item_data =  new bag_item_data;
+    public isLoop:boolean = false;
+    public volume:number = 1; //音量
 }
 
 export class event_item_success { //成功
@@ -446,7 +464,6 @@ export class event_item_countdown_over extends base_event_item{ //倒计时结
 export class event_item_be_event extends base_event_item{ // 被动事件
     public binding_widget_id:number = -1; //绑定某一个UI
 }
-
 export class UserData {
     public user_id:string = null; //用户id
     public token:string = "";

+ 12 - 2
assets/script/config.ts

@@ -85,6 +85,8 @@ export class config {
         config.event_type_map.set(config.event_type.play_sound,"播放音效")
         config.event_type_map.set(config.event_type.show_scene_title,"显示场景标签")
         config.event_type_map.set(config.event_type.scene_ani,"场景动画")
+        config.event_type_map.set(config.event_type.stop_play_loop_sound,"停止播放一个音效")
+        config.event_type_map.set(config.event_type.delete_drag_other_data,"删除拖拽控件的其他拖拽目标")
         //top_view_type_map
         config.top_view_type_map.set(config.top_view_type.__null,"暂未选择")
         config.top_view_type_map.set(config.top_view_type.not_have_interact,"没有交互")
@@ -220,6 +222,8 @@ export class config {
         play_sound:15, //播放一个音效
         show_scene_title:16,//显示场景的标签
         scene_ani:17,//场景动画
+        delete_drag_other_data:18,//删除其他拖拽目标的属性
+        stop_play_loop_sound:19,//停止一个音效
     }
 
     static top_view_type_map:Map<number,string> = new Map();
@@ -287,10 +291,16 @@ export class config {
     static MSG_CODE = {
         SUCCESS: 10000,
     }
-
     static TOKEN:string = ""
     static USER_DATA:string = "userData"
-    static TT_REWARD_ADS_ID:string = "";
+    static TT_REWARD ={
+        RE_LIFE: "122kafg9cd5f187ib3",
+        ANSWER: "j6abe2594e84399f4k",
+        LOOK_TIPS: "f6o78gcl7mec09m3b8",
+        UN_LOCK_24: "38vhsipa5qe3tkpnve",
+        UN_LOCK: "52kg38k634094h9b19",
+    }
+
 }
 
 

+ 19 - 1
assets/script/run/TaskSchedule/taskServce.ts

@@ -122,6 +122,10 @@ export class taskServce {
 
     public static DistributedEvent(event:event_item){
 
+        // console.log("event",event)
+        if(event==null){
+            return
+        }
         if(event.event_id===taskServce.guo_ju_qing_binding_event_id){
             taskServce.guo_ju_qing_binding_event_id = -1;
             ClientEvent.dispatchEvent(config.EventRun.ON_SHOW_RULE_BTN)
@@ -187,7 +191,7 @@ export class taskServce {
                 ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,event.event_item_hide_data.binding_widget_id,event)
             break;
             case config.event_type.delay_exe_event:
-                // console.log("delay_exe_event")
+                console.log("delay_exe_event")
                 if(event.event_item_delay_exe_data==null){
                     return tools.showToast("延迟执行事件配置错误")
                 }
@@ -212,6 +216,12 @@ export class taskServce {
             case config.event_type.scene_ani:
                 ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
             break;
+            case config.event_type.delete_drag_other_data:
+                ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
+            break;
+            case config.event_type.stop_play_loop_sound:
+                ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
+            break;
 
         }
         taskServce.exeNextDelayEvent(event)
@@ -297,6 +307,9 @@ export class taskServce {
 
 
     public static onWidgetFinishEvent(widget_id:number){ //监听被动控件完成了自己的任务
+        if(taskServce.mTaskData==null){
+            return
+        }
         let event = this.exeWidgeTaskDic.get(widget_id)
         if(taskServce.cur_collect_event!=null){
             if(event!=null){
@@ -346,6 +359,9 @@ export class taskServce {
 
     public static checkFinishDaBossTask(){
         let isFinish  = true;
+        if(!taskServce.mTaskData._da_guai){
+            return isFinish
+        }
         for (let index = 0; index < taskServce.mTaskData._da_guai.widget_id_list.length; index++) {
             const element = taskServce.mTaskData._da_guai.widget_id_list[index];
             if(!taskServce.finishDaGuai.get(element.widget_id)){
@@ -391,6 +407,7 @@ export class taskServce {
         let id = -1;
         if(event!=null){
             if(event.success.is_finish_game){
+                tools.showToast("调用了游戏结束")
                 return gameManager.Singleton.gameOver()
                 
             }else{
@@ -419,6 +436,7 @@ export class taskServce {
     }
 
     public static exeNextDelayEvent(event:event_item){
+
         if(event!=null){
             if(event.success.is_finish_game){
                 return gameManager.Singleton.gameOver()

+ 22 - 5
assets/script/run/gameManager.ts

@@ -1,6 +1,6 @@
 import { _decorator, AudioClip, AudioSource, Component, Node, Size, Sprite, SpriteFrame, sys, UITransform, Vec3 } from 'cc';
 import { game_run } from './game_run';
-import { attributes_data, LevelItemData, scene_item_data, sysMessage, task_data, ui_att_item, UserData, widget_item_data } from '../../data/data';
+import { attributes_data, LevelItemData, other_widget_finish_listen_item, scene_item_data, sysMessage, task_data, ui_att_item, UserData, widget_item_data } from '../../data/data';
 import { config } from '../config';
 import { sceneManager } from './sceneManager';
 
@@ -33,9 +33,13 @@ export class gameManager extends Component {
     }
 
     public static is24Free():boolean{
-        if(gameManager.g_userData.freeTime!=0){
+        if(gameManager.getStaticUserData().freeTime==undefined){
+            gameManager.getStaticUserData().freeTime = 0;
+            gameManager.saveUserData()
+        }
+        if(gameManager.getStaticUserData().freeTime!=0){
             let cur_time = new Date()
-            let old_time =  new Date(gameManager.g_userData.freeTime)
+            let old_time =  new Date(gameManager.getStaticUserData().freeTime)
             let timeDiff =  cur_time.getTime() - old_time.getTime();
             // console.log("old",tools.getLocalTime(old))
             // console.log("cur",tools.getLocalTime(cur))
@@ -44,7 +48,7 @@ export class gameManager extends Component {
             // var hours = Math.floor(minutes / 60);
             console.log("相隔几分钟",minutes)
             if(minutes>=1440){
-                gameManager.g_userData.freeTime = 0;
+                gameManager.getStaticUserData().freeTime = 0;
                 gameManager.saveUserData()
                 return false;
             }else{
@@ -215,7 +219,7 @@ export class gameManager extends Component {
     }
 
     public reLife(){
-        SdkUtil.showVideoAd(config.TT_REWARD_ADS_ID,(res)=>{
+        SdkUtil.showVideoAd(config.TT_REWARD.RE_LIFE,(res)=>{
             if(res.isEnded){
                 this.mGameRun.onlaunch(()=>{
                     gameManager.Singleton.startLevelGame()
@@ -604,6 +608,19 @@ export class gameManager extends Component {
             this.mSysSound.playSound(gameManager.sys_data.content.sys_click_correct_detail_music)
         }
     }
+
+    public checkWidgetList(list:other_widget_finish_listen_item[]):number{
+        let event_id = -1;
+        for (let index = 0; index < list.length; index++) {
+            const item = list[index];
+            let isFinish =  this.mGameRun.isCurScenePageCheckWidgetFinish(item.widget_id)
+            if(!isFinish){
+                event_id = item.event_id;
+                break;
+            }
+        }
+        return event_id;
+    }
 }
 
 

+ 2 - 2
assets/script/run/game_list_view/game_list.ts

@@ -147,14 +147,14 @@ export class game_list extends Component {
         }
         if(!item.getIsUnLock()){
             gameManager.Singleton.showUnLockView((view:unLock_view)=>{
-                SdkUtil.showVideoAd(config.TT_REWARD_ADS_ID,(res)=>{
+                SdkUtil.showVideoAd(config.TT_REWARD.UN_LOCK,(res)=>{
                     if(res.isEnded){
                         item.UnLock()
                         view.close()
                     }
                 })
             },(view:unLock_view)=>{
-                SdkUtil.showVideoAd(config.TT_REWARD_ADS_ID,(res)=>{
+                SdkUtil.showVideoAd(config.TT_REWARD.UN_LOCK_24,(res)=>{
                     if(res.isEnded){
                         gameManager.lookVideoAdsNumber++;
                         view.updateLookVideo()

+ 3 - 0
assets/script/run/game_run.ts

@@ -159,6 +159,9 @@ export class game_run extends Component {
             this.launch.active = false;
         },0.7)
     }
+    public isCurScenePageCheckWidgetFinish(widget_id:number):boolean{
+        return this.scene_layer.getComponent(scene_layer).isCurScenePageCheckWidgetFinish(widget_id)
+     }
 }
 
 

+ 46 - 3
assets/script/run/scene_layer.ts

@@ -14,6 +14,7 @@ export class scene_layer extends Component {
     @property(Node) scenePageDir:Node = null;
     protected mScenePages:scene_item_data[] =[]
     private mCurPage:number = 0;
+    private mAudioList:Map<string,Node> = new Map;
     protected start(): void {
         this.node.addComponent(AudioSource)
     }
@@ -29,6 +30,7 @@ export class scene_layer extends Component {
         this.content.removeAllChildren()
         this.mScenePages = []
         this.mCurPage = 0;
+        this.mAudioList.clear()
         ClientEvent.off(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
     }
 
@@ -50,12 +52,44 @@ export class scene_layer extends Component {
             }
             if(is_can_play){
                 if(event.event_item_play_sound_data!=null){
-                    this.getAudioSource().clip = gameManager.getCacheSoundByName(event.event_item_play_sound_data.sound_res.url);
-                    this.getAudioSource().play();
-                    this.getAudioSource().volume = 1;
+                    if(event.event_item_play_sound_data.isLoop==undefined){
+                        event.event_item_play_sound_data.isLoop = false;
+                    }
+                    if(event.event_item_play_sound_data.volume==undefined){
+                        event.event_item_play_sound_data.volume = 1;
+                    }
+                    this.addAudioItemAndPlay(event.event_item_play_sound_data.sound_res.url,event.event_item_play_sound_data.volume ,event.event_item_play_sound_data.isLoop)
                 }
             }
    
+        }else if(event.type===config.event_type.stop_play_loop_sound){
+            if(event.event_item_stop_play_loop_sound_data!=null){
+                this.deleteAudioItem(event.event_item_stop_play_loop_sound_data.res)
+            }
+        }
+    }
+
+    addAudioItemAndPlay(res:string, volume:number,isLopp:boolean = false){
+        let content = this.getCurScenePage().node;
+        let audio_node = this.mAudioList.get(res)
+        if(audio_node==null){
+            audio_node = new Node
+            audio_node.parent = content;
+            audio_node.addComponent(AudioSource)
+            this.mAudioList.set(res,audio_node)
+        }
+        audio_node.getComponent(AudioSource).clip = gameManager.getCacheSoundByName(res);
+        audio_node.getComponent(AudioSource).play();
+        audio_node.getComponent(AudioSource).volume = volume;
+        audio_node.getComponent(AudioSource).loop = isLopp;
+    }
+
+    deleteAudioItem(res:string){
+        let audio_node = this.mAudioList.get(res)
+        if(audio_node){
+            audio_node.getComponent(AudioSource).stop()
+            audio_node.removeFromParent()
+            this.mAudioList.delete(res)
         }
     }
     changePage(page:number){
@@ -92,6 +126,15 @@ export class scene_layer extends Component {
         this.changePage(0)
     }
 
+    public getCurScenePage(){
+        return this.content.children[this.mCurPage].getComponent(scene_page)
+    }
+
+    public isCurScenePageCheckWidgetFinish(widget_id:number):boolean{
+        let page:scene_page = this.getCurScenePage()
+        return  page.checkFinish(widget_id)
+    }
+
     onUp(){
         let up_page = this.mCurPage -1;
         if(up_page>=0){

+ 23 - 11
assets/script/run/scene_page.ts

@@ -1,10 +1,11 @@
-import { _decorator, Canvas, Color, Component, Director, Game, game, instantiate, misc, Node, Prefab, Size, Sprite, tween, Tween, UI, UIOpacity, UITransform, Vec3, View, Widget } from 'cc';
+import { _decorator, Color, Component, instantiate, misc, Node, Prefab, Size, Sprite, tween, Tween, UIOpacity, UITransform, Vec3, Widget } from 'cc';
 import { ani_frame, att_ani_data, attributes_data, event_item, scene_item_data, widget_item_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;
@@ -41,14 +42,9 @@ export class scene_page extends Component {
         }else{
             this.content.getComponent(Widget).enabled = false;
         }
-        this.node.getComponent(Widget).target = this.node.parent;
+
         this.mAnimationList = this.mSceneAtt.animation_list;
-        // console.log(" this.mAnimationList", this.mAnimationList)
-        // let width =  View.instance.getVisibleSize().width/this.content.getComponent(UITransform).contentSize.width;
-        // let height =  View.instance.getVisibleSize().height/this.content.getComponent(UITransform).contentSize.height;
-        // if(height>1){
-        //     this.content.scale = new Vec3(1,height,1)
-        // }
+        console.log(" this.mAnimationList", this.mAnimationList)
         if(this.mIsMask){
             this.maskView.active = true;
         }else{
@@ -59,7 +55,14 @@ export class scene_page extends Component {
         ClientEvent.on(config.EventRun.SHOW_ZHAO_BU_TONG_FINISH_STATUS,this.on_zhao_bu_tong_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();
+    }
     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)
@@ -71,7 +74,7 @@ export class scene_page extends Component {
         if(item){
             item.getComponent(widget_base).beActive(widgetId,event)
         }
-        // console.log("event.type",event.type)
+        console.log("event.type",event.type)
         if(event.type===config.event_type.scene_ani){
 
             let ani_id = event.event_item_scene_ani.ani_id;
@@ -86,6 +89,15 @@ export class scene_page extends Component {
             }else{
                 return tools.showToast(`错误的动画配置!id:${this.mData.att.id}-请检查`)
             }
+        }else if(event.type===config.event_type.delete_drag_other_data){
+            let wd = event.event_item_delete_drag_other_data.widget_id
+            let index = event.event_item_delete_drag_other_data.delete_drag_other_index
+            item = this.mWidgetList.get(wd)
+            if(item){
+                item.getComponent(widget_drag).deleteOtherDrag(index)
+            }else{
+                tools.showToast("删除拖拽目标配置错误!")
+            }
         }
     }
     on_zhao_bu_tong_finish(widget:zhao_xi_jie_item_data){
@@ -209,7 +221,7 @@ export class scene_page extends Component {
                 self.content.getComponent(Sprite).color = tar.color; 
                 self.content.getComponent(UIOpacity).opacity = tar.opacity;
                 // self.content.getComponent(UITransform).setContentSize(tar.size)
-                // self.content.position = tar.pos
+                self.content.position = tar.pos
                 self.content.angle = tar.rotation;
             }
         }).call(()=>{

+ 28 - 2
assets/script/run/tips/tips_view.ts

@@ -1,6 +1,8 @@
 import { _decorator, Component, Node, Sprite } from 'cc';
 import { scene_tips_data, ui_att_item } from '../../../data/data';
 import { gameManager } from '../gameManager';
+import { SdkUtil } from '../../sdkUtil';
+import { config } from '../../config';
 const { ccclass, property } = _decorator;
 
 @ccclass('tips_view')
@@ -12,17 +14,41 @@ export class tips_view extends Component {
     @property(Node) text_view:Node = null;
     private mData:scene_tips_data = null;
     private IsShowFindRuleTips:boolean = false;
+    private isLookTipsVideo:boolean = false;
+    private isLookAnswerVideo:boolean = false;
     public initView(data:scene_tips_data){
         this.mData = data;
         this.btn_tips.off(Node.EventType.TOUCH_END)
         this.btn_answer.off(Node.EventType.TOUCH_END)
         this.btn_close.off(Node.EventType.TOUCH_END)
+        this.isLookTipsVideo = false;
+        this.isLookAnswerVideo = false;
         this.btn_tips.on(Node.EventType.TOUCH_END,()=>{
-            this.showTips()
+            if(this.isLookTipsVideo){
+                this.showTips()
+            }else{
+                SdkUtil.showVideoAd(config.TT_REWARD.LOOK_TIPS,(res)=>{
+                    if(res.isEnded){
+                        this.isLookTipsVideo = true;
+                        this.showTips()
+                    }
+                })
+            }
+
             gameManager.Singleton.sys_click_button_music()
         })
         this.btn_answer.on(Node.EventType.TOUCH_END,()=>{
-            this.showAnswer()
+            if( this.isLookAnswerVideo){
+                this.showAnswer()
+            }else{
+                SdkUtil.showVideoAd(config.TT_REWARD.LOOK_TIPS,(res)=>{
+                    if(res.isEnded){
+                        this.isLookAnswerVideo = true;
+                        this.showAnswer()
+                    }
+                })
+            }
+  
             gameManager.Singleton.sys_click_button_music()
         })
         this.btn_close.on(Node.EventType.TOUCH_END,()=>{

+ 13 - 1
assets/script/run/tips/ui_manifestations.ts

@@ -6,6 +6,7 @@ import { tip_type_all } from './tip_type_all';
 import { shouji_item } from './shouji_item';
 import { ClientEvent } from '../../clientEvent';
 import { gameManager } from '../gameManager';
+import { SdkUtil } from '../../sdkUtil';
 const { ccclass, property } = _decorator;
 
 @ccclass('ui_manifestations')
@@ -13,6 +14,7 @@ export class ui_manifestations extends Component {
     @property(Node) tip_type_single:Node = null;
     @property(Node) tip_type_all:Node = null;
     @property(Node) btn_single_click_hide_tip:Node = null;
+    private tipsMap:Map<string,boolean> = new Map;
     private mData:zhao_xi_jie_data = null;
     public initView(data:zhao_xi_jie_data){
         this.mData = data;
@@ -45,7 +47,17 @@ export class ui_manifestations extends Component {
     }
 
     public onItemTips(data:zhao_xi_jie_item_data){
-        ClientEvent.dispatchEvent(config.EventRun.SHOW_TIPS,data.tips_res)
+        if(this.tipsMap.get(data.tips_res)){
+            ClientEvent.dispatchEvent(config.EventRun.SHOW_TIPS,data.tips_res)
+        }else{
+            SdkUtil.showVideoAd(config.TT_REWARD.LOOK_TIPS,(res)=>{
+                if(res.isEnded){
+                    this.tipsMap.set(data.tips_res,true)
+                    ClientEvent.dispatchEvent(config.EventRun.SHOW_TIPS,data.tips_res)
+                }
+            })
+        }
+       
     }
     public onShowTips(){
         gameManager.Singleton.showTips()

+ 11 - 2
assets/script/run/ui/sound_text_content.ts

@@ -17,10 +17,19 @@ export class sound_text_content extends Component {
         this.node.addComponent(AudioSource)
     }
 
+    public isCanClose(){
+        if(this.mData.is_open_click_close==undefined){
+            this.mData.is_open_click_close = true;
+            return true;
+        }
+        return this.mData.is_open_click_close;
+    }
     public show(widget_id,data:att_text_sound_data,ac:AudioClip){
         this.node.on(Node.EventType.TOUCH_START,()=>{
-            this.node.off(Node.EventType.TOUCH_START)
-            this.onAudioEnded()
+            if(this.isCanClose()){
+                this.node.off(Node.EventType.TOUCH_START)
+                this.onAudioEnded()
+            }
         })
         this.mWidgetId = widget_id;
         this.mData = data;

+ 5 - 0
assets/script/run/ui/win.ts

@@ -12,6 +12,7 @@ export class win extends Component {
     private m_call_share = null;
     private m_call_next = null;
     public show(call_share,call_next){
+        this.node.active = true;
         this.m_call_next = call_next;
         this.m_call_share = call_share;
         this.btn_share.off(Node.EventType.TOUCH_END)
@@ -28,6 +29,10 @@ export class win extends Component {
                 this.m_call_next()
             }
         })
+        this.btn_close.on(Node.EventType.TOUCH_END,()=>{
+            this.node.active = false;
+            gameManager.Singleton.backGameList()
+        })
         if(gameManager.Singleton.getLevelData()!=null){
             tools.loadUrl(gameManager.Singleton.getLevelData().complete_img,this.icon.getComponent(Sprite))
         }

+ 7 - 2
assets/script/run/widget/widget_base.ts

@@ -160,6 +160,9 @@ export class widget_base extends Component {
             Tween.stopAllByTarget(this.bindTarget)
             this.bindTarget = null;
         }
+        if(this.mCurAnimation.isMove==undefined||this.mCurAnimation.isMove==null){
+            this.mCurAnimation.isMove = true;
+        }
         // Tween.stopAll()
         let getFrameData = (index)=>{
             let cur_frame:ani_frame =this.mCurRunAnimation[index];
@@ -209,7 +212,9 @@ export class widget_base extends Component {
                 self.icon.getComponent(Sprite).color = tar.color; 
                 self.icon.getComponent(UIOpacity).opacity = tar.opacity;
                 self.icon.getComponent(UITransform).setContentSize(tar.size)
-                self.node.position = tar.pos
+                if(self.mCurAnimation.isMove){
+                    self.node.position = tar.pos
+                }
                 self.node.angle = tar.rotation;
             }
         }).call(()=>{
@@ -218,7 +223,7 @@ export class widget_base extends Component {
         color_opactiy_tw_size.start();
 
     }
-    protected getIsFinish():boolean{
+    public getIsFinish():boolean{
         return this.mIsFinish
     }
     protected registeredEvent(){

+ 44 - 5
assets/script/run/widget/widget_drag.ts

@@ -11,10 +11,24 @@ export class widget_drag extends widget_base {
     private offset_x:number = 0;
     private offset_y:number = 0;
     private mDragRect:Rect = null;
+    private other_drag_list:att_drag_data[] = [];
     protected init(){
         if(this.mData.att.drag_data!=null){
             this.mDragData = this.mData.att.drag_data
         }
+        if(this.mData.att.drag_data.other_drag_list!=undefined){
+            for (let index = 0; index <  this.mData.att.drag_data.other_drag_list.length; index++) {
+                const element =  this.mData.att.drag_data.other_drag_list[index];
+                let item = new att_drag_data;
+                item.drag_pos_x = element.drag_pos_x;
+                item.drag_pos_y = element.drag_pos_y;
+                item.other_event_id = element.other_event_id;
+                item.drag_size_width = element.drag_size_width;
+                item.drag_size_height = element.drag_size_height;
+                this.other_drag_list.push(item)
+            }
+        }
+
     }
     protected start(): void {
         if(this.mIsActive){
@@ -24,7 +38,6 @@ export class widget_drag extends widget_base {
     protected registeredEvent(): void {
         this.node.on(Node.EventType.TOUCH_START,(et:EventTouch)=>{
             if(!this.mIsActive) return
-            console.log("target",et.target)
             this.mIsStartMove = true;
             let p = new Vec3(et.getUILocation().x,et.getUILocation().y)
             let n_p = this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(p)
@@ -54,9 +67,9 @@ export class widget_drag extends widget_base {
             return false;
         }
         let isCheck = false;
-        if(this.mDragData.other_drag_list.length>0){
-            for (let index = 0; index < this.mDragData.other_drag_list.length; index++) {
-                const item_data = this.mDragData.other_drag_list[index];
+        if(this.other_drag_list.length>0){
+            for (let index = 0; index < this.other_drag_list.length; index++) {
+                const item_data = this.other_drag_list[index];
                 let w = item_data.drag_size_width;
                 let h = item_data.drag_size_height;
                 let pos =  new Vec3(this.mData.att.x+item_data.drag_pos_x,this.mData.att.y+item_data.drag_pos_y)
@@ -78,10 +91,36 @@ export class widget_drag extends widget_base {
         return isCheck;
     }
 
+    checkOtherListenWidgetFinish(){
+        let is_finish = true;
+        if(this.mDragData.other_widget_finish_listen_list==undefined){
+            return true
+        }
+        if(this.mDragData.other_widget_finish_listen_list.length<=0){
+            return true;
+        }
+        let event_id = gameManager.Singleton.checkWidgetList(this.mDragData.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 deleteOtherDrag(index:number){
+        this.other_drag_list.splice(index,1)
+    }
+
     private checkOnecFinish(){
         if(this.checkMoveToDragRect()){
             this.mIsStartMove = false;
-            this.onFinishEvent()
+            if(this.checkOtherListenWidgetFinish()){
+                this.onFinishEvent()
+            }else{
+
+            }
         }else{
 
             if(this.checkOther()){