Web — Pemutaran State Machine
State machine (grafik logika yang menentukan animasi mana yang diputar berdasarkan kondisi tertentu) di Rive dapat dikendalikan langsung dari JavaScript. Bayangkan seperti pengontrol lampu lalu lintas — ia berjalan di latar belakang, memantau sinyal, dan berpindah antar status secara otomatis. Halaman ini membahas pola kontrol yang paling umum digunakan.
Putar Otomatis State Machine
Atur autoplay: true untuk memulai state machine begitu file selesai dimuat.
Catatan: halaman ini menggunakan CDN global (rive.Rive). Jika Anda menginstal via npm dan menggunakan import Rive from '@rive-app/webgl2', gunakan new Rive({...}) sebagai gantinya.
const r = new rive.Rive({
src: 'https://cdn.rive.app/animations/vehicles.riv',
canvas: document.getElementById('canvas'),
autoplay: true,
stateMachines: 'bumpy',
onLoad: () => {},
});
Putar, Jeda, dan Hentikan
Gunakan metode play, pause, dan stop untuk mengontrol pemutaran secara manual.
const r = new rive.Rive({
src: 'https://cdn.rive.app/animations/vehicles.riv',
canvas: document.getElementById('canvas'),
stateMachines: 'bumpy',
});
// Panggil kapan saja sesuai kebutuhan:
r.play();
r.pause();
r.stop();
Reset State Machine
Panggil reset() untuk menghapus artboard dan state machine yang sedang berjalan, lalu memulai ulang dari awal. Berikan opsi yang sama seperti yang Anda berikan pada konstruktor.
r.reset({
stateMachines: 'bumpy',
autoplay: true,
});
Lihat Rive Parameters untuk semua field RiveResetParameters yang tersedia.
Input
Input state machine adalah nilai yang Anda set dari kode untuk menggerakkan transisi — seperti tombol-tombol pada panel kontrol yang memberi tahu animasi apa yang harus dilakukan selanjutnya. Tipe yang umum digunakan:
- Boolean — nilai true/false, misalnya
isHovered - Number — nilai numerik, misalnya
speed - Trigger — dipicu sekali dan direset otomatis
onLoad: () => {
const inputs = r.stateMachineInputs('bumpy');
const speedInput = inputs.find(i => i.name === 'Speed');
speedInput.value = 5;
}
Mendengarkan Event
Rive dapat mengirimkan event bernama dari sebuah state machine (sinyal yang dikirim animasi kembali ke kode Anda). Gunakan onEvent untuk meresponsnya.
r.on(rive.EventType.RiveEvent, (event) => {
console.log('Rive event:', event.data.name);
});