greensock的tween源码阅读笔记

对于一个处于gc状态的tween,
如果这个gc状态是由kill触发的,那么直接从masterList删除
否则的话,被tweenlite的垃圾回收删除!


对于一个不是立即启动的tween,它被添加到timeline的时机是???
tweencore里面有一个add方法???
在tweenlite里面又有add方法???

对于一个延迟的delaycall,它的active一直是false,理论上是不会被调用的啊???
答:在timeline的render方法中,除了根据active判断,还有另外一个判断条件!!!

tweenlite作为一个独立的tween需要被insert到roottimeline中
timeline作为容器类的tween也需要被insert到roottimeline中,
但roottimeline也是一个timeline但它作为一个root,是不能被insert的


public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void {
参数time表示从tween启动的时候到当前所经历的时间!


public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void {
当skipRender为flase的时候,会调用renderTime,并把totalDurationTime作为参数,
就是想做最后一个渲染(渲染的结果就是这个tween的预想详解),然后直接结束这个tween!

suppressEvents表示是否跳过这个tween上的事件

一般,如果在tween还没有完成的时候,调用complete方法,那么onComplete方法是不会被执行的。
但对于delaycall这种类型的缓动,当调用complete时,onComplete方法是会被运行的!!
即是,duration为0的tween,在complete被调用时,onComplete参数会被运行!!

而对于非autoRemoveChildren的timeline,当上面的某个tween被complete时,这个tween是不会被移除的!!
换句话说,这个tween就不是处于gc状态,不会被回收!

也是说,一个tween的是否结束,是在renderTime函数中,感觉time和totalDurationTime的比较得到的!!
而renderTime发现这个tween已经执行完成,又会回调complete函数!

就是说,在complete和render之间又存在一个循环调用!!

虽然理论上complete函数是public的,但根据这个设计,外部应该是不能调用complete函数的,
而应该调用kill方法!

 

cachedOrphan
属性只有在tween被insert或者被remove的时候被修改
设置enable属性时,会被用到!
如果是timeline设置某个tween的enable属性,那么ignoreTimeline参数一般都是true,
因为timeline在设置enable的过冲中肯定会修改链表。
如果是tween自己设置enable属性,那么ignoreTimeline参数一般都是设置false
即:
一个tween在不在timeline中,也可能有timeline控制,也可能由tween自身控制
tween 和 timeline 可以互相控制彼此,在操作对方的时候,就保证对方不再来操作自己,不然会死循环!

 

未完待续...

转载于:https://www.cnblogs.com/tianlanliao/p/3460267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值