# 表达式
理解表达式需要一定的编程技能。而编程是一个独立的专业学科,我们这里不作详细说明。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) |