薛鸿潇 %!s(int64=5) %!d(string=hai) anos
pai
achega
84fdd9c84b

+ 19 - 13
assets/script/game/component/tween/EffectOpenAndClose.ts

@@ -112,12 +112,13 @@ export default class EffectOpenAndClose extends cc.Component {
                         if (node) {
                         if (node) {
                             let world_pos = node.parent.convertToWorldSpaceAR(node.getPosition());
                             let world_pos = node.parent.convertToWorldSpaceAR(node.getPosition());
                             let node_pos = this.effect_par.parent.convertToNodeSpaceAR(world_pos);
                             let node_pos = this.effect_par.parent.convertToNodeSpaceAR(world_pos);
-                            cc.tween(this.effect_par)
-                                .to(0.3, { scale: 0, position: new cc.Vec3(node_pos.x, node_pos.y, 0) })
-                                .call(() => {
-                                    cb && cb();
-                                })
-                                .start()
+                            mk.tween.scaleParallelMove(this.effect_par, 0.3, 1, 0, node_pos, cb)
+                            // cc.tween(this.effect_par)
+                            //     .to(0.3, { scale: 0, position: new cc.Vec3(node_pos.x, node_pos.y, 0) })
+                            //     .call(() => {
+                            //         cb && cb();
+                            //     })
+                            //     .start()
                         } else {
                         } else {
                             cb && cb();
                             cb && cb();
                             cc.error('关闭时动画节点未找到,请检查!!!!!')
                             cc.error('关闭时动画节点未找到,请检查!!!!!')
@@ -125,13 +126,18 @@ export default class EffectOpenAndClose extends cc.Component {
                     }
                     }
                     break;
                     break;
                 case EffectType.rightIn:
                 case EffectType.rightIn:
-                    cc.tween(this.effect_par)
-                        .to(0.3, { x: 1000 }, cc.easeOut(3))
-                        .call(() => {
-                            this.effect_par.active = false;
-                            cb && cb();
-                        })
-                        .start()
+                    mk.tween.move(this.effect_par, 0.3, this.effect_par.getPosition(), new cc.Vec2(this.effect_par.x, 1000), () => {
+                        this.effect_par.active = false;
+                        cb && cb();
+                    }, 'sineOut')
+
+                    // cc.tween(this.effect_par)
+                    //     .to(0.3, { x: 1000 }, cc.easeOut(3))
+                    //     .call(() => {
+                    //         this.effect_par.active = false;
+                    //         if (typeof cb == 'function') cb();
+                    //     })
+                    //     .start()
                     break;
                     break;
             }
             }
         } else {
         } else {

+ 65 - 11
assets/script/mk/utils/TweenUtil.ts

@@ -6,7 +6,6 @@ const { ccclass, property } = cc._decorator;
  */
  */
 @ccclass
 @ccclass
 export default class TweenUtil {
 export default class TweenUtil {
-
     /**
     /**
      * 缩放效果
      * 缩放效果
      * @param node 动画节点
      * @param node 动画节点
@@ -18,9 +17,7 @@ export default class TweenUtil {
     public scale(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, complete_fun?: Function) {
     public scale(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, complete_fun?: Function) {
         node.scale = start_scale;
         node.scale = start_scale;
         let scale1 = cc.tween().to(time, { scale: end_scale });
         let scale1 = cc.tween().to(time, { scale: end_scale });
-        let call1 = cc.tween().call(() => {
-            if (typeof complete_fun == 'function') complete_fun();
-        })
+        let call1 = cc.tween().call(() => { if (typeof complete_fun == 'function') complete_fun(); })
         cc.tween(node).then(scale1).then(call1).start()
         cc.tween(node).then(scale1).then(call1).start()
     }
     }
 
 
@@ -35,9 +32,7 @@ export default class TweenUtil {
     public scaleX(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, complete_fun?: Function) {
     public scaleX(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, complete_fun?: Function) {
         node.scaleX = start_scale;
         node.scaleX = start_scale;
         let scale1 = cc.tween().to(time, { scaleX: end_scale });
         let scale1 = cc.tween().to(time, { scaleX: end_scale });
-        let call1 = cc.tween().call(() => {
-            if (typeof complete_fun == 'function') complete_fun();
-        })
+        let call1 = cc.tween().call(() => { if (typeof complete_fun == 'function') complete_fun(); })
         cc.tween(node).then(scale1).then(call1).start()
         cc.tween(node).then(scale1).then(call1).start()
     }
     }
 
 
@@ -50,14 +45,73 @@ export default class TweenUtil {
      * @param end_pos 结束节点位置
      * @param end_pos 结束节点位置
      * @param complete_fun 完成回调
      * @param complete_fun 完成回调
      */
      */
-    public scaleAndMove(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, end_pos: cc.Vec2, complete_fun?: Function) {
+    public scaleParallelMove(node: cc.Node, time: number = 0.15, start_scale: number = 0, end_scale: number = 1, end_pos: cc.Vec2 = cc.Vec2.ZERO, complete_fun?: Function) {
         node.scale = start_scale;
         node.scale = start_scale;
         let scale1 = cc.tween().to(time, { scale: end_scale });
         let scale1 = cc.tween().to(time, { scale: end_scale });
         let pos1 = cc.tween().to(time, { position: new cc.Vec3(end_pos.x, end_pos.y, 0) });
         let pos1 = cc.tween().to(time, { position: new cc.Vec3(end_pos.x, end_pos.y, 0) });
-        let call1 = cc.tween().call(() => {
-            if (typeof complete_fun == 'function') complete_fun();
-        })
+        let call1 = cc.tween().call(() => { if (typeof complete_fun == 'function') complete_fun(); })
         let parallel = cc.tween().parallel(scale1, pos1)
         let parallel = cc.tween().parallel(scale1, pos1)
         cc.tween(node).then(parallel).then(call1).start();
         cc.tween(node).then(parallel).then(call1).start();
     }
     }
+
+    /**
+     * 移动效果
+     * @param node 
+     * @param time 
+     * @param complete_fun 
+     */
+    public move(node: cc.Node, time: number = 0.15, start_pos: cc.Vec2 = cc.Vec2.ZERO, end_pos: cc.Vec2 = cc.Vec2.ZERO, complete_fun?: Function, easing?: keyof typeof TweenEasing) {
+        node.setPosition(start_pos);
+        let pos1 = cc.tween().to(time, { position: new cc.Vec3(end_pos.x, end_pos.y, 0) }, { easing: easing });// cc.easeOut(3)
+        let call1 = cc.tween().call(() => { if (typeof complete_fun == 'function') complete_fun(); })
+        cc.tween(node).then(pos1).then(call1).start();
+    }
 }
 }
+/**
+ * 缓动类型
+ */
+enum TweenEasing {
+    linear,
+    smooth,
+    fade,
+    quadIn,
+    quadOut,
+    quadInOut,
+    quadOutIn,
+    cubicIn,
+    cubicOut,
+    cubicInOut,
+    cubicOutIn,
+    quartIn,
+    quartOut,
+    quartInOut,
+    quartOutIn,
+    quintIn,
+    quintOut,
+    quintInOut,
+    quintOutIn,
+    sineIn,
+    sineOut,
+    sineInOut,
+    sineOutIn,
+    expoIn,
+    expoOut,
+    expoInOut,
+    expoOutIn,
+    circIn,
+    circOut,
+    circInOut,
+    circOutIn,
+    elasticIn,
+    elasticOut,
+    elasticInOut,
+    elasticOutIn,
+    backIn,
+    backOut,
+    backInOut,
+    backOutIn,
+    bounceIn,
+    bounceOut,
+    bounceInOut,
+    bounceOutIn
+}