使用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
你说这种的。。。。类似于宽度高度啥的缓变之类?- -那其实就是把现有的缓动铺一个api出来返回一个数值的感觉?