# 表达式
理解表达式需要一定的编程技能。而编程是一个独立的专业学科,我们这里不作详细说明。NodeVideo使用的是MiniScript (opens new window)作为内置的编程语言,你可以参考它的快速上手 (opens new window)或者用户手册 (opens new window)来学习。
当然,你不会编程也没关系,请参考表达式示例,直接复制需要的代码即可使用。
# 全局变量
| 名称 | 解释 | 类型 |
|---|---|---|
| time | 当前播放时间 | 数值 |
| name | 当前参数名字 | 字符串 |
| value | 当前参数的值 | 数值,[,],[,,] |
| frameDuration | 一帧的时间,相当于1/FPS | 数值 |
| speed | 当前参数的变化速度 | 数值 |
| velocity | 当前参数的变化速度向量 | 数值,[,],[,,] |
| numKeys | 当前参数包含的关键帧数量 | 数值 |
| numLayers | 当前组下包含的图层数量 | 数值 |
| index | 当前图层在父组下的索引位置 | 数值 |
查看变量
以上所有变量都可以通过表达式:“print 变量名”查看。 或者给文字图层添加表达式,直接输入变量名也可以显示。
# 全局对象
# thisLayer
| 名称 | 解释 | 类型 |
|---|---|---|
| name | 图层名字 | 字符串 |
| index | 图层在父组下的索引位置 | 数值 |
| startTime | 图层开始时间 | 数值 |
| is3D | 图层是否为3D模式 | 数值 |
| position | 位置 | 二维数组[,],3D模式下为三维数组[,,] |
| scale | 缩放 | 二维数组[,],3D模式下为三维数组[,,] |
| pivot | 轴心 | 二维数组[,],3D模式下为三维数组[,,] |
| rotation | 旋转 | 数值,3D模式下为三维数组[,,] |
| opacity | 透明度 | 数值 |
| parent | 父图层(组) | 图层对象,与该表相同 |
# 内置函数
| 名称 | 解释 | 参数 |
|---|---|---|
| wiggle | 震动效果 与参数震动器相同 | freq: 震动频率 amp: 震动幅度 octaves: 震动细节(默认1) amp_mult: 振幅倍率(默认0.5) t: 指定时间(默认图层时间) |
| smooth | 对当前参数进行采样 然后取平均值 | width: 采样时间(默认0.1) samples: 采样数(默认5) t: 指定时间(默认图层时间) |
| posterizeTime | 设置表达式的更新频率 | updatesPerSecond: 每秒更新次数 |
| key | 获取关键帧 | n: 关键帧索引 |
| nearestKey | 获取离当前时间最近的关键帧 | t: 指定时间(默认图层时间) |
| seedRandom | 设置随机数种子 | offset: 种子 timeless: 是否随时间变化(默认false) |
| random | 取得一个随机数(可以为数组) | min: 最小值(可以为数组) max: 最大值(可以为数组) |
| noise | 取得一个平滑噪声值 | n: 数值(可以为数组) |
| loopIn | 从第一个关键帧往后循环 | type: 类型 -“cycle”: 从头循环 -“pingpong”: 往复循环 -“continue”: 在最后一个关键帧持续 numKeyframes: 循环到第几个关键帧(默认0表示循环到最后) |
| loopOut | 从最后一个关键帧往前循环 | type: 类型 -“cycle”: 从头循环 -“pingpong”: 往复循环 -“continue”: 在第一个关键帧持续 numKeyframes: 循环到第几个关键帧(默认0表示循环到最开始) |
| loopInDuration | 与loopIn类似,循环指定时间 | type: 类型,与loopIn相同 duration: 指定循环时间 |
| loopOutDuration | 与loopOut,循环指定时间 | type: 类型,与loopOut相同 duration: 指定循环时间 |
| timeToTimecode | 将时间转换为时间码 [00:00:00:00] | t: 时间(默认为当前时间) timecodeBase: 帧率(默认30) isDuration: 是否为相对图层的时间(默认为false) |
| timeToFrames | 将时间转换为帧数 | t: 时间(默认当前时间) fps: 帧率(默认当前项目帧率) isDuration: 是否为相对图层的时间(默认为false) |
| framesToTime | 将帧数转换为时间 | frames: 帧数 fps: 帧率(默认当前项目帧率) |
| velocityAtTime | 获取当前参数的变化速度(向量) | t: 时间(默认当前时间) |
| speedAtTime | 获取当前参数的变化速度 | t: 时间(默认当前时间) |
| valueAtTime | 获取当前参数的值 | t: 时间(默认当前时间) |
| linear | 线性插值 | t: 插值[0-1] value1: 最小值 value2: 最大值 |
| ease | 平滑插值,两头速度为0 | t: 插值[0-1] value1: 最小值 value2: 最大值 |
| easeIn | 平滑插值,开始速度为0 | t: 插值[0-1] value1: 最小值 value2: 最大值 |
| easeOut | 平滑插值,结束速度为0 | t: 插值[0-1] value1: 最小值 value2: 最大值 |
| rgbToHsl | 将RGB转换为HSL | rgbaArray: rgba四维数组 |
| hslToRgb | 将HSL转换为RGB | hslaArray: hsla四维数组 |
| toFixed | 将数值返回为字符串,指定小数位 | v: 数值 n: 小数点位数(默认2) |
| layer | 返回指定图层 | index: 相对位置 isRelative: 是否是相对位置(默认True) |
# 数学函数
| - | - | - |
|---|---|---|
| abs(x) | acos(x) | asin(x) |
| atan(y,x) | ceil(x) | cos(r) |
| sin(r) | floor(x) | log(x,b) |
| round(x,d) | pi | sign(x) |
| sqrt(x) | tan(r) | exp(f) |
| pow(f,p) | clamp(v,min,max) | length(v) |
| normalize(v) |