CocosCreator 源码cc.BezierTo详解

欢迎关注公众号:“Cocos Creator 源码讲解”,一起学习。

/* An action that moves the target with a cubic Bezier curve to a destination point.

 * @class BezierTo

 * @extends BezierBy

 * @param {Number} t

 * @param {Vec2[]} c - Array of points

 * @example

 * var bezier = [cc.v2(0, windowSize.height / 2), cc.v2(300, -windowSize.height / 2), cc.v2(300, 100)];

 * var bezierTo = new cc.BezierTo(2, bezier);

 */

/* 使用三次贝塞尔曲线将目标移动到目标点的动作。

 * @贝塞尔托类

 * @extends BezierBy

 * @param {数字} t

 * @param {Vec2[]} c -点数组

 * @例子

 * var bezier = [cc.v2(0, windowSize.height /2), cc.v2(300, -windowSize.height /2), cc.v2(300, 100)];

 * var bezierTo = new cc.BezierTo(2, 贝塞尔曲线);

 */

cc.BezierTo = cc.Class({

    name: 'cc.BezierTo',

    extends: cc.BezierBy,



    ctor: function (t, c) {

        this._toConfig = [];

        c && this.initWithDuration(t, c);

    },



    /*

     * Initializes the action.

     * @param {Number} t time in seconds

     * @param {Vec2[]} c - Array of points

     * @return {Boolean}

     */

    initWithDuration: function (t, c) {

        if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {

            this._toConfig = c;

            return true;

        }

        return false;

    },

    /* 复制action */

    clone: function () {

        var action = new cc.BezierTo();

        this._cloneDecoration(action);

        action.initWithDuration(this._duration, this._toConfig);

        return action;

    },

    /* 设置target */

    startWithTarget: function (target) {

        cc.BezierBy.prototype.startWithTarget.call(this, target);

        var locStartPos = this._startPosition;

        var locToConfig = this._toConfig;

        var locConfig = this._config;



        locConfig[0] = locToConfig[0].sub(locStartPos);

        locConfig[1] = locToConfig[1].sub(locStartPos);

        locConfig[2] = locToConfig[2].sub(locStartPos);

    }

});

/**

 * !#en An action that moves the target with a cubic Bezier curve to a destination point.

 * !#zh 按贝赛尔曲线轨迹移动到目标位置。

 * @method bezierTo

 * @param {Number} t

 * @param {Vec2[]} c - Array of points

 * @return {ActionInterval}

 * @example

 * // example

 * var bezier = [cc.v2(0, windowSize.height / 2), cc.v2(300, -windowSize.height / 2), cc.v2(300, 100)];

 * var bezierTo = cc.bezierTo(2, bezier);

 */

cc.bezierTo = function (t, c) {

    return new cc.BezierTo(t, c);

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值