功能与用途
该示例演示如何把 Helios 集成到 Svelte 组件中,核心目的是利用 Svelte 的响应式机制(Stores 或 Svelte 5 Runes)高效地管理帧状态,并在帧变化时触发绘制。适用于在 Svelte 环境中构建 Helios 动画组合(compositions),以及需要按帧驱动的音频可视化场景。
主要能力
资料给出三种模式。其一,Store 模式:用 svelte/store 的 readable 包装 Helios 实例,在启动函数中先写入初始状态,再通过 helios.subscribe 订阅状态更新并调用 set,返回取消订阅函数。其二,Svelte 5 Runes 模式:用 $state 定义 currentFrame、fps、duration、isPlaying 等字段,在构造函数中读取 Helios 的 fps、duration、isPlaying,并订阅状态更新字段,组件内用 $effect 自动响应。其三,音频可视化模式:用 derived store 组合音频 buffer 与 Helios 状态,依据 currentFrame 与 fps 计算出时间,在采样数据上按窗口分析(资料中的 RMS 与波形结果为示意,未给出完整 FFT 或时域分析实现)。
使用方式
资料提供的步骤为:创建 Helios Store(lib/store.js);创建组合组件,在脚本中从 @helios-project/core 导入 Helios,以 duration 与 fps 实例化,调用 bindToDocumentTimeline(),可选地挂到 window,创建 store,然后用响应式语句 $: if (ctx && $heliosStore) 调用 draw($heliosStore.currentFrame);在 onMount 中获取 canvas 2D 上下文、设置画布尺寸并做初始绘制。Svelte 5 版本则新建 HeliosState 类(lib/helios.svelte.ts),在组件中实例化并用 $effect 监听状态。音频部分需分别准备 bufferStore 与 heliosStore,再用 createAudioStore 生成派生 store 并在响应式语句中读取 rms 与 waveform 绘制。
适用场景与限制
适合 Svelte 应用中的 Helios 动画渲染、Canvas 逐帧绘制和音频可视化。需要注意:资料中的音频分析函数为示意实现(返回固定 rms 0.5 与空 waveform),未提供完整的 FFT 或波形计算逻辑;Helios 的安装方式、依赖版本、API 完整说明、性能表现与收费信息均暂未提供;示例假设 @helios-project/core 已可用,但未给出安装命令。