基础知识 - 标签: Start 从 0 开始的帧索引,用于指定开始帧
End 结束帧相对于 Start 的偏移量,仅当上句为 0 的情况下等同于从 1 开始的帧索引可以视为该句来决定结束帧
LoopCount 循环次数,当其 >1 时动画将会使用下面两句,负数值代表无限
LoopStart 从 0 开始的帧索引,用于指定每次循环的开始帧
LoopEnd 从1开始的帧索引,用于指定每次循环的结束帧
注意: 本帖的循环部分特指第一个Loop中抵达的 LoopEnd 至最后一个Loop起始的 LoopStart 这 LoopCount-1 次循环
对于以 0 开始的索引规则: 没有循环的情况:(LoopCount=1) 有限循环的情况:(LoopCount≥2) Start -> LoopEnd-1 -- [LoopCount-1 次] --><-> LoopStart -> Start+End -1 进入循环时如果 Start >= LoopEnd-1 播放 Start 指定的帧,然后进入循环部分
退出循环时如果 Start+End -1 <= LoopStart 播放 LoopStart 指定的帧,然后直接结束
如果
对于以 1 开始的索引规则: 没有循环的情况:(LoopCount=1) Start+1 -> Start+End (← Start+1 + End -1) 有限循环的情况:(LoopCount≥2) Start+1 -> LoopEnd -- [LoopCount-1 次] --><-> LoopStart+1 -> Start+End (← Start+1 + End -1)
进入循环时如果 Start+1 >= LoopEnd 播放 Start+1 指定的帧,然后进入循环部分
退出循环时如果 Start+End <= LoopStart+1 播放 LoopStart+1 指定的帧,然后直接结束
注: 如果LoopStart+1 >= LoopEnd,那么显示 1 帧 LoopStart + 1的帧,然后进入下一次Loop
内容解释 [LoopCount-1 次]: 达到 LoopEnd 后跳转到 LoopStart 的行为共执行了 LoopCount - 1 次
式子中的 -1 与 +1: 为适应以 0 或 1 为起始帧的两种规则对标签值进行计算,即 帧序号 = 标签值 + 调整量
式子结尾的 -1: 从 2 到 10 有 9 个数字,而不是 10-2=8 个,对应的 10=2+9 -1,这是显而易见的
特殊情况 如果该 图像 是由另一个 动画 通过 Next 所使用的,那么起始的 Start会*2 也就是最左侧的子式对于 0 开始的规则 Start*2:,对于 1 开始的规则一开始的规则: Start*2+1
示例 - 1:
1
2
3
4
5
6
7
8
9
10
11
12
[SA] AnimList=TestAnim
[TestAnim] Start=7 LoopEnd=20 LoopStart=16 End=9 LoopCount=3
( 0 始)7 8 9 10 11 12 13 14 15 16 17 18 19 | 16 17 18 19 | 16 (Start+End -1 = LoopStart) ( 1 始)8 9 10 11 12 13 14 15 16 17 18 19 20 | 17 18 19 20 | 17 (Start+End < LoopStart+1)
示例 - 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[SA] AnimList=PIFFPIFF
[PIFFPIFF] Next=TestAnim_M
[TestTemplate] Start=5 LoopEnd=11 LoopStart=10 End=6 LoopCount=2
[TestAnim_M]:[TestTemplate] Next=TestAnim_N
[TestAnim_N]:[TestTemplate] Next=TestAnim_M
( 0 始)PIFFPIFF | 保持在第 10 帧 | 同左 |…… ( 1 始)PIFFPIFF | 保持在第 11 帧 | 同左 |……
做了个计算器 注意: 该计算器默认Shape文件自身总帧数足够,因此你必须输入End值 如果LoopCount>=1那么还需要输入LoopEnd的值
当然这个工具不考虑 Rate 等其他影响播放总长的因素 因为该工具仅考虑动画帧序列的走法,与播放时长和速度无关 经调查左 4 标签负值情况几乎没人用到,于是禁用了 (Loop)End 的负值计算
游客,本帖隐藏的内容需要积分高于 75 才可浏览,您当前积分为 0
上面所提的算法已更新至 MODENC注意:除了 Rate 等正常的帧时间调控手段外,已观测到 WWShit 中还有一些特殊情况会导致某帧保持 2 帧长度导致最后的帧时长+1 例如使用 SW.Animation 和 Anim 第 Start 帧 [序号] 会停住 1 帧 [时间],也就是整个序列在第 2 帧 [时间] 才开始从第 Start 帧 [序号] 开始连续播放 无 Anim 武器的弹头 AnimList 第 Start+6 帧 [序号] 会停住 1 帧 [时间],也就是在整个序列中间的某帧会停 1 帧 [时间] 才继续播放 不过那些都是帧长度的问题了,与本文所计算的帧序列与索引序号无关 除非你要卡一个动画对象的播放时间长度那么可能需要 上面的帧长度+1 再加上其他影响动画播放速度的计算规则,不然这个问题对你来说不会有任何影响 |