分享一下自己写的XTween

github:https://github.com/hubluesky/XTween
cocos自带tween的几个问题。
1、一个tween只能有一个target,无法拼其它target
2、by动画有问题,比喻我有点个按钮做个0.1的by缩放,然后横屏的时候,修改缩放为0.5,竖屏的时候修改缩放为1.0,这个时候by动画就错了,不是我期望的0.1缩放。

我还写了一个 CocosXTween.ts封装了很多tween时要使用的变量,比喻:

    interface Renderable2D {
        colorR: number;
        colorG: number;
        colorB: number;
        colorA: number;
    }

    interface Node {
        positionX: number;
        positionY: number;
        positionZ: number;
        worldPositionX: number;
        worldPositionY: number;
        worldPositionZ: number;
        eulerAngleX: number;
        eulerAngleY: number;
        eulerAngleZ: number;
        scaleX: number;
        scaleY: number;
        scaleZ: number;
        scaleXYZ: number;
    }

class Target {
    visable: boolean = false;
    position = { x: 0, y: 0, z: 0 };
    rotation: number = 0;
    alpha: number = 0;
    width: number = 100;
    height: number = 200;
}

let target = new Target();
let target2 = new Target();

xtween(target)
    .to(1000, { width: 500, rotation: 360 }, { easing: XTween.Easing.Back.Out })
    .to(1500, { height: 600 }, {
        onComplete: (target) => {
            console.log("onComplete 1", target);
        }
    })
    .delay(1000)
    .repeat(4, true, xtween(target).to(300, { alpha: 1 }).to(300, { alpha: 0 }))
    .sequence(xtween(target).to(1000, { rotation: 100 }), xtween(target2).to(1000, { rotation: 100 }))
    .call(() => {
        console.log("Call 1", target, target2);
    })
    .to(1500, { position: { x: 10, y: 20, z: 30 } }, {
        onStart: (target) => {
            console.log("onStart ", target);
        }
    })
    .set({ visable: false })
    .call(() => {
        console.log("Call 2", target, target2);
    })
    .start();


4赞

看起来很不错:+1:

大哥,能分享一下3.x的xtween嘛,之前用过还挺好用的,现在找不到了