运行时 (Runtimes)
Rive 事件 (Rive Events)
概览
Rive 事件允许你在动画的特定时刻触发回调。常见用途包括:
- 在动画特定时刻播放音频
- 在交互发生时打开 URL
- 在触摸交互时添加触觉反馈
- 在按钮和其他 UI 元素上实现功能
- 发送语义信息
有关在编辑器中创建事件的信息,请参阅 事件 (Events)。
订阅事件
Web (JS)
javascript
const r = new rive.Rive({
src: "my-file.riv",
canvas: document.getElementById("canvas"),
autoplay: true,
stateMachines: "State Machine 1",
onRiveEventReceived: (riveEvent) => {
console.log("事件触发:", riveEvent.data.name);
// 处理事件数据
if (riveEvent.data.properties) {
console.log("事件属性:", riveEvent.data.properties);
}
},
});React
javascript
import { useRive, useRiveEvents } from "@rive-app/react-canvas";
function MyComponent() {
const { rive, RiveComponent } = useRive({
src: "my-file.riv",
stateMachines: "State Machine 1",
autoplay: true,
});
useRiveEvents(rive, (riveEvent) => {
console.log("事件触发:", riveEvent.data.name);
});
return <RiveComponent />;
}Flutter
dart
controller.addEventListener((event) {
print("事件触发: ${event.name}");
// 处理事件数据
});iOS/macOS (Swift)
swift
riveViewModel.riveView?.delegate = self
// 实现 RiveViewDelegate
func onRiveEventReceived(riveFile: RiveFile, name: String, properties: [String: RiveValue]?) {
print("事件触发: \(name)")
}Android (Kotlin)
kotlin
riveAnimationView.addEventListener(object : RiveEventListener {
override fun onEvent(event: RiveEvent) {
Log.d("Rive", "事件触发: ${event.name}")
}
}) 事件属性
事件可以携带自定义属性,你可以在编辑器中定义这些属性:
- String (字符串)
- Number (数字)
- Boolean (布尔值)
javascript
onRiveEventReceived: (riveEvent) => {
const properties = riveEvent.data.properties;
if (properties.url) {
window.open(properties.url, "_blank");
}
} 打开 URL
事件的常见用途是在交互时打开 URL:
javascript
onRiveEventReceived: (riveEvent) => {
const props = riveEvent.data.properties;
if (props && props.url) {
window.open(props.url.toString());
}
}