关于leftFixedSpotAnim.values
liuxuan30 opened this issue · comments
leftFixedSpotAnim.values = @[thirdVal, thirdVal, fourthVal, fourthVal, thirdVal, thirdVal, secondVal, secondVal, firstVal, firstVal, secondVal, secondVal, thirdVal, thirdVal];
leftFixedSpotAnim.keyTimes = @[@(0.0), @(0.01), @(0.01), @(0.25), @(0.25), @(0.33), @(0.33), @(0.41), @(0.41),//sleep
@(0.85), @(0.85), @(0.93), @(0.93), @(1.00)];//SPOT_DELAY_RATIO = 0.08
不明白为什么开始把leftSpot设置到4倍以后, 为什么leftFixedSpotAnim.values 3,3,4,4,3,3,2,2,1,1,2,2,3,3. 为什么是3开始, 然后是4, 接着感觉又正常了?
这个其实不用太在意,是关键帧的区间选择问题,为了灵活我选择的动画起点是0.25这个keyframe而不是0,可能选得稍微有点后。
然后解释下为什么开始有两个3,首先是第二个3,是由倒数第二个value(thirdVal)keyTime(0.93) 维持一个DELAY_RATIO = 0.08 => 0.01得到,而第一个3,是为了填补keyTime=0.0这个位置。
这段代码是固定污点没有变大动画那个版本的,后面版本已经处理这个问题
后面版本已经处理这个问题 是指? 我在当前分支还是能看到这段代码
还有该问题,个人感觉0.0这个位置应该是4, 不知道为什么是3... 我的感觉是像 4 4 4 4 3 3 2 2 1 1 2 2 3 3
那么奇怪?我当前master的代码是:
leftFixedSpotAnim.values = @[thirdVal, fourthVal, fourthVal, thirdVal, thirdVal, secondVal, secondVal, firstVal, firstVal, secondVal, secondVal, thirdVal, thirdVal];
CGFloat ti = SPOT_MAGNIFY_ANIM_DURATION_RATIO;
leftFixedSpotAnim.keyTimes = @[@(0.0), @(0.0+ti), @(0.25), @(0.25+ti), @(0.33), @(0.33+ti), @(0.41), @(0.41+ti),//sleep
@(0.84), @(0.84+ti), @(0.92), @(0.92+ti), @(1.00)];//SPOT_DELAY_RATIO = 0.08
因为刚才那个原因,如果0.0是4的话,就中断干扰了0.93 -> 0.01这个动画,目前0.93 -> 0.01图形是保持3的状态,如果0.0是4,就会有一下闪烁。当然如果相对地从动画刚开始看而不是从当次循环跨越到下次循环看的话,0.0位置的3会让动画不是从最大状态(4)开始,但是只有0.01的单位时间几乎看不见。
折中选择的话,是要避免每次循环时过度不闪烁而忽略动画开始的那0.01瞬间变化。
后面就处理了这一点瑕疵。