强烈建议加入的小功能:ActionAny

使用action的时候建议加入“对任何属性执行缓动动画”的功能,比如随便做个“打字机”效果也轻而易举。实现方法很简单,如下:
let ActionAny = cc.ActionInterval.extend({
_setterFunc: null,
_setterTarget: null,

    ctor: function (duration, setter, target) {//setter:带一个alpha参数的函数,0~1
        cc.ActionInterval.prototype.ctor.call(this);
        setter !== undefined && this.initWithDuration(duration, setter, target);
    },

    /*
     * 初始化action
     * @param {Number} duration  duration in seconds
     * @param {actionAnySetter} setter 响应设置函数,其参数为一个0~1的值,指示的是此action的进度
     * @param {*} [target]
     * @return {Boolean}
     */
    initWithDuration: function (duration, setter, target) {
        if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) {
            this._setterFunc = setter;
            this._setterTarget = target;
            return true;
        }
        return false;
    },

    clone: function () {
        let action = new ActionAny();
        this._cloneDecoration(action);
        action.initWithDuration(this._duration, this._setterFunc, this._setterTarget);
        return action;
    },

    reverse:function () {
        cc.logID(1016);
    },

    update: function (time) {
        time = this._computeEaseTime(time);//0~1
        if(this._setterFunc) {
            if(this._setterTarget)
                this._setterFunc.call(this._setterTarget, time);
            else
                this._setterFunc(time);
        }
    },

    startWithTarget: function (target) {
        cc.ActionInterval.prototype.startWithTarget.call(this, target);
    }
});

这样通过回调来操控任何属性的缓动,非常方便,虽然web版可以正常使用,但是问题来了,因为继承自cc.ActionInterval,所以在导出native的时候就会出现无法实例化的问题,因为interval是抽象类从而js写的继承用不了,就黑屏了。
so,希望官方能把这个东西弄到c++那边去,有这个东西,可以替代一切的预定义缓动acton

1赞

动作action里不是有个cc.easing吗?还有个speed的

你先看清楚啊……对任意属性进行缓动操作,比如你脚本定义了一个float类型的变量,我想要对其进行动画修改,就跟runAction(cc.scaleTo(…))这样的操作

:sweat_smile:你说这种的。。。。类似于宽度高度啥的缓变之类?- -那其实就是把现有的缓动铺一个api出来返回一个数值的感觉?

强烈建议加入 “输入需求,一键生成游戏” 的小功能

1赞

你这吐槽过分了,他这个需求还是蛮常见的

我这个需求更常见

就是我贴的那些代码的功能咯,就是铺一个api出来让用户自己来定义根据action进度的刷新函数。我这么写在web端没有任何问题,随便做个打字机效果非常简单,但是android、ios这些native就不行了,因为那些action被封在c++那边了,js无法直接继承cc.ActionInterval(起码目前官方没有给出可以继承的方法)。
而现在的action系统也没有暴露出action的update,所以堵死了……
最后我是通过创建全局node,然后要缓动的时候把脚本挂到它上面缓动操作已有的属性比如scaleX,然后在update里面反过来调用自定义的缓动更新,“嫁接”……虽然没啥问题,但是,功能是实现了,怎么说呢……那样就跟本来的action脱节了……

“输入需求,一键生成游戏”,你这吐槽还不如直接说“一键生成人民币”呢……

还有摄像头的放大缩小也需要缓动的,有这个就比较方便了