# SceneScript语言参考

SceneScript 遵循 ECMAScript 2018 规范,因此你可以使用 ECMAScript 中所有的功能,这些功能可以在类似的语言(如 JavaScript)中找到。这非常有用,因为你可以使用各种有用的类。例如,允许访问当前日期和时间的Date,允许你访问各种数学函数的Math

本页仅介绍 SceneScript 为使处理壁纸而添加的所有新增功能。

# 全局变量

SceneScript 引入了一些全局变量,你可以在任何代码的位置访问这些全局变量。

Global Description
engine 访问应用程序的常规功能。 IEngine class.
input 与输入相关的数据,主要是鼠标光标。 IInput class.
thisScene 当前加载的场景壁纸对象。 IScene class
thisLayer 当前脚本所在的图层对象。 ILayer class.
thisObject 当前脚本所属的对象。 IThisPropertyObject class.
console 访问控制台日志以进行调试。 IConsole class.
shared 默认情况下为空,允许你在多个脚本之间共享数据。 Shared class.

# 事件

SceneScript 使用事件系统,该系统可以让你在发生某些事件时运行特定代码。最值得注意的是,update事件是最常用于在Wallpaper Engine中每一帧中执行的SceneScript代码。init事件适用于首次加载壁纸时运行一次的代码,applyUserProperties事件允许你对壁纸的用户属性更改做出反应。此外,还有一些与鼠标移动和鼠标输入相关的cursor事件,你可以将这些事件添加到壁纸中。

Event Description
init 此初始化函数将在创建其所属的对象后调用一次。
update 所有导出了这个函数的脚本,都会在每一帧调用一次此函数。
destroy 此事件函数将在它所属的对象被销毁之前调用。
resizeScreen 每次分辨率改变时,都会调用此函数。
applyUserProperties 此事件函数将在第一次加载壁纸、以及用户调整任意用户属性时调用。
cursorEnter 当鼠标的光标进入对象的边界时,将调用此事件函数。
cursorLeave 当鼠标的光标离开对象的边界时,将调用此事件函数。
cursorMove 移动鼠标光标时将调用此事件函数。
cursorDown 当在对象上按下鼠标点击时,将调用此事件函数。
cursorUp 当在对象上抬起鼠标点击时,将调用此事件函数。
cursorClick 当在同一对象上点击并抬起鼠标时,将调用此事件函数。
mediaStatusChanged 当用户改变媒体状态(打开或关闭)时,将调用此事件函数。
mediaPlaybackChanged 当用户启动、停止或暂停媒体时,将调用此事件函数。
mediaPropertiesChanged 当当前播放的媒体的属性发生更改时,将调用此事件函数。
mediaThumbnailChanged 当当前播放的媒体的缩略图更改时,将调用此事件函数。
mediaTimelineChanged 当播放媒体的当前时间发生变化时,将调用此事件函数,只有某些特定的应用程序支持。

# Classes

Wallpaper Engine为所有组件都提供了一个适当的类,以便你可以通过编程方式访问所有内容。以下列表包含 SceneScript 引入的所有相关类:

Class Description
AnimationEvent 此类的对象描述已从时间轴动画或变形动画触发的动画事件。
AudioBuffers 提供对左右音频频谱值及其组合平均值的访问,以便进行音频可视化。
CameraTransforms 该类的对象描述相机方向和位置。
CursorEvent 提供有关鼠标事件的位置信息。
IAnimation 此类表示时间轴属性动画。
IAnimationLayer 此类表示操控变形动画图层。
IConsole 你可以通过全局对象在 SceneScript 代码的任何位置访问此接口,以便与控制台日志进行交互。
IEffect 提供对图像图层上使用的图像效果的访问。
IEffectLayer 图像图层和文本图层的基础类。
IEngine 提供有关用户设备和正在运行的壁纸的通用信息。
IImageLayer 此类提供对特定图像图层的访问。
ITextLayer 此类提供对文本图层的访问。
IModelLayer 此类提供对3D模型图层的访问。
IInput 提供对输入相关数据(主要是鼠标)的访问。
ILayer 提供对与图层相关的数据的访问。
IMaterial 提供对材质/着色器属性的动态属性的访问。
IParticleSystem 提供对粒子系统的访问,并可以让你修改其播放状态。
IParticleSystemInstance 提供对粒子系统的实例修饰符的访问。你可以使用它来动态调整粒子系统的细节。
IScene 提供对当前加载场景的属性的访问。
ISoundLayer 提供特定对声音层的访问功能。
ITextureAnimation 此类表示纹理动画。
IVideoTexture 此类表示视频纹理动画。
Mat4 用于创建4维矩阵的类。
MediaPlaybackEvent 媒体集成事件,在用户启动、停止或暂停媒体时触发。
MediaPropertiesEvent 媒体集成事件,在当前媒体会话的属性发生更改时触发。
MediaStatusEvent 媒体集成事件,在用户打开或关闭媒体集成时触发。
MediaThumbnailEvent 媒体集成事件,当与当前媒体相关的缩略图发生更改时触发。
MediaTimelineEvent 可选的媒体集成事件,在媒体的当前时间发生更改时触发。
Shared 与可用于在多个脚本之间共享数据的全局对象。
Vec2 保存二维键值的类:xy.
Vec3 保存三维键值的类:x, yz.

# Modules

Wallpaper Engine还提供了一些可用于访问某些功能的模块。这些有助于轻松实现某些功能。

模块 描述
WEColor 提供与颜色处理相关的函数模块
WEMath 提供与数学相关的函数模块。
WEVector 提供与向量相关的函数模块。