一键导入
example-vue
Patterns for using Helios with Vue. Use when building compositions in a Vue environment.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Patterns for using Helios with Vue. Use when building compositions in a Vue environment.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Collection of agent skills for Helios video engine. Use when working with programmatic video creation, browser-native animations, or Helios compositions. Install individual skills by path for specific capabilities.
Core API for Helios video engine. Use when creating compositions, managing timeline state, controlling playback, or subscribing to frame updates. Covers Helios class instantiation, signals, animation helpers, and DOM synchronization.
Patterns for using Helios with Vanilla Canvas API. Use when building high-performance 2D/3D animations without frameworks.
Chart.js integration patterns for Helios. Use when creating animated data visualizations with Chart.js.
Learn how to use D3.js with Helios for data visualization. Use when creating charts, graphs, or data-driven animations.
Patterns for using Helios with Framer Motion. Use when you want to use Framer Motion's physics and transitions but need frame-perfect synchronization with Helios.
| name | example-vue |
| description | Patterns for using Helios with Vue. Use when building compositions in a Vue environment. |
Integrate Helios into Vue components using the Composition API, Refs, and Watchers.
useVideoFrame ComposableThis composable subscribes to Helios and provides a reactive frame reference.
// composables/useVideoFrame.js
import { ref, onUnmounted } from 'vue';
export function useVideoFrame(helios) {
const frame = ref(helios.currentFrame.peek());
const unsubscribe = helios.subscribe((state) => {
frame.value = state.currentFrame;
});
onUnmounted(() => {
unsubscribe();
});
return frame;
}
<script setup>
import { ref, watch, onMounted } from 'vue';
import { Helios } from '@helios-project/core';
import { useVideoFrame } from './composables/useVideoFrame';
// Initialize Singleton
const helios = new Helios({ duration: 10, fps: 30 });
helios.bindToDocumentTimeline();
if (typeof window !== 'undefined') window.helios = helios;
const canvasRef = ref(null);
const frame = useVideoFrame(helios);
// Draw Function
const draw = () => {
const canvas = canvasRef.value;
if (!canvas) return;
const ctx = canvas.getContext('2d');
// Draw logic
const progress = frame.value / (helios.duration * helios.fps);
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillRect(progress * canvas.width, 100, 50, 50);
};
// React to frame updates
watch(frame, draw);
// Initial Draw
onMounted(() => {
draw();
});
</script>
<template>
<canvas ref="canvasRef" width="1920" height="1080"></canvas>
</template>
For audio visualization, use a computed property to analyze audio data based on the reactive frame or currentTime.
// composables/useAudioData.js
import { computed, unref } from 'vue';
export function useAudioData(buffer, currentTime) {
return computed(() => {
const b = unref(buffer);
const t = unref(currentTime);
if (!b) return { rms: 0, waveform: [] };
const data = b.getChannelData(0);
const sampleRate = b.sampleRate;
const center = Math.floor(t * sampleRate);
// Analysis logic...
return { rms: 0.5, waveform: [] };
});
}
<script setup>
import { computed, watch } from 'vue';
import { useVideoFrame } from './composables/useVideoFrame';
import { useAudioData } from './composables/useAudioData';
const frame = useVideoFrame(helios);
const currentTime = computed(() => frame.value / helios.fps);
const audioData = useAudioData(buffer, currentTime);
watch(audioData, ({ rms, waveform }) => {
// Draw logic
});
</script>
examples/vue-canvas-animation/examples/vue-audio-visualization/