前提:使用Cc的TweenMax动画插件/使用Ts
因为在使用Unity开发时习惯了使用Tween动画插件进行补间动画,所以在接触Cc制作动画效果时就想到有没有类似的插件存在,果然就发现了几个,于是对比下,发现TweenMax功能比较齐全,比较好用,导入之后发现没法查注释。。并且默认输入是会提示错误的,没办法只能想FbInstance一样自己手写注释了,在官方找到了代码的文档自己写Creator.d.ts。
下面的注释还只是常用的部分,有些很少用到的我还没有加入,并且能直接通过方法名或字段名看出是什么作用的地方我并没有加注释,直接在项目根目录文件中找到Creator.d.ts文件将下面的代码复制进去就可以愉快的使用TweenMax的注释并且不会有红线错误提示了。
declare class TweenMax
{
/**
*构造函数
*@param target 应该影响其属性的目标对象(或对象数组)
*@param duration 持续时间(以秒为单位)
*@param vars 参数对象,用于定义应该补间的每个属性的结束值以及任何特殊属性
*/
constructor(target:Object, duration:Number, vars:Object );
static from(target:Object, duration:Number, vars:Object ) : TweenMax;
static fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object ) : TweenMax;
static getTweensOf(target:Object, onlyActive:Boolean );
static delayedCall(delay:Number, callback:Function, params?:Array, scope?:*, useFrames?:Boolean ) : TweenMax;
static killDelayedCallsTo(func:Function );
static killTweensOf(target:Object, vars?:Object );
static killAll(complete?:Boolean, tweens?:Boolean, delayedCalls?:Boolean, timelines?:Boolean );
static killChildTweensOf(parent:Object, complete?:Boolean );
static pauseAll(tweens:Boolean, delayedCalls:Boolean, timelines:Boolean );
static resumeAll(tweens:Boolean, delayedCalls:Boolean, timelines:Boolean );
static set(target:Object, vars:Object ) : TweenMax;
static staggerTo(targets:Array, duration:Number, vars:Object, stagger?:Number, onCompleteAll?:Function, onCompleteAllParams?:Array, onCompleteAllScope?:* ) : Array;
static staggerFromTo(targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger?:Number, onCompleteAll?:Function, onCompleteAllParams?:Array, onCompleteAllScope?:* ) : Array
static to(target:Object, duration:Number, vars:Object ) : TweenMax;
isActive() : Boolean;
delay(value?:Number ) : *;
duration(value:Number ) : *;
eventCallback(type:String, callback?:Function, params?:Array, scope?:* ) : *;
endTime(includeRepeats:Boolean ) : Number;
/**
* 刷新任何内部记录的开始/结束值,如果您想要重新启动动画而不恢复任何先前记录的起始值,这将非常有用。
*/
invalidate();
kill(vars?:Object, target?:Object ) : *;
pause(atTime:*, suppressEvents:Boolean ) : *;
paused(value:Boolean ) : *;
play(from:*, suppressEvents:Boolean ) : *;
progress(value:Number, suppressEvents:Boolean ) : *;
/**
* 重启
*@param includeDelay(default = false) - 确定重新启动时是否遵循延迟(如果有)
*@param suppressEvents(default = true) - 如果 true (默认值),当播放头移动到time 参数中定义的新位置时,不会触发任何事件或回调。
*/
restart(includeDelay?:Boolean, suppressEvents?:Boolean ) : *;
resume(from?:*, suppressEvents?:Boolean ) : *;
/**
* 反转播放,以便动画的所有方面都向后定向,包括例如补间的简易性。
*@param from (default = null) - 动画开始反向播放的时间(或TimelineLite / TimelineMax实例的标签)(如果没有定义,它将从播放头当前所在的任何地方开始播放)。要从动画的最后开始,请使用 0。负数相对于动画结束,因此-1将从结尾开始为1秒
*@param
*/
reverse(from?:*, suppressEvents?:Boolean ) : *;
/**
* 获取或设置动画的反转状态,指示是否应该向后播放动画。
*@param value (default = false) - 省略参数返回当前值(getter),而定义参数则设置值(setter)并返回实例本身以便于链接
*/
reversed(value?:Boolean ) : *;
/**
* 重复动画
*@param value 次数(第一次不计算在内)
*/
repeat(value:Number ) : *;
/**
* 获取或设置重复之间的秒数(或基于帧的补间的帧)的时间量。
*/
repeatDelay(value:Number ) : *;
/**
* 跳转到指定时间(不影响实例是暂停还是反转)
*@param time 要去的时间
*@param suppressEvents(default = true)-如果true(默认值),当播放头移动到time 参数中定义的新位置时,不会触发任何事件或回调。
*/
seek(time:*, suppressEvents?:Boolean ) : *;
startTime(value:Number ) : *;
time(value:Number ) : *;
timeScale(value:Number ) : *;
/**
* 获取或设置补间的总持续时间(以秒为单位)(或基于帧的补间的帧),包括任何重复或repeatDelay。
*@param value (default = NaN) - 省略参数返回当前值(getter),而定义参数则设置值(setter)并返回实例本身以便于链接。负值将从 动画的END开始解释
*/
totalDuration(value:Number ) : *;
totalProgress(value:Number, suppressEvents:Boolean ) : *;
totalTime(time:Number, suppressEvents:Boolean ) : *;
/**
* 动态更新补间值,即使补间正在进行中,它们也会无缝地改变路线。
*@param vars 包含应具有udpated的目标值的属性的对象。但如果你改变一个插件值,则需要完全定义它,例如,要将目标值更新x为300并将目标值更新y为500,请传递:{x:300, y:500}
*@param resetDuration (默认值= false) -如果补间已开始(或成品),并 resetDuration 是 true,补间将重新启动。如果 resetDuration 是 false,则补间的时间将被接受(不重启),并且将调整每个补间属性的起始值,使其看起来无缝地重定向到新的目标值
*/
updateTo(vars:object, resetDuration?:Boolean ) : *;
// ease: Ease;// (or Function or String);
// onComplete: Function;
}
举例一个简单的用法
/**node Alpah动画
* 值范围(0~255)
*/
public static SetAlphaAnimation(target: cc.Node, time: number, startAlpha: number, endAlpha: number, onFinish:Function, paramsOnComplete ?: Array
/**node Alpah动画
* 值范围(0~255)
*/
public static SetAlphaAnimation(target: cc.Node, time: number, startAlpha: number, endAlpha: number, onFinish:Function, paramsOnComplete ?: Array
注意到两个线性参数的不同了 Linear.easeNone 和 "Linear.easeNone" 使用string类型可以避免加注释的麻烦
相比于C#的传参,这个用起来真是很灵活
方法中的传参类型需要根据自己实现的效果在官方文档中找了。。(包括动画曲线设置)
比较人性化的是文档里会例举每种动画曲线的效果和代码的实现,很方便
最后,希望给需要的人省去自己写加Ts注释的时间
官方文档:TweenMax官方文档地址