fix: Sync currentTime when user selects a frame in timeline
This commit is contained in:
@@ -88,6 +88,23 @@ export function PreviewPlayer() {
|
|||||||
|
|
||||||
const selectedFrame = storyboard?.frames.find((f) => f.id === selectedFrameId)
|
const selectedFrame = storyboard?.frames.find((f) => f.id === selectedFrameId)
|
||||||
|
|
||||||
|
// Sync currentTime when user selects a frame (not during playback)
|
||||||
|
useEffect(() => {
|
||||||
|
if (isPlaying || !storyboard?.frames.length || !selectedFrameId) return
|
||||||
|
|
||||||
|
// Calculate start time of selected frame
|
||||||
|
let startTime = 0
|
||||||
|
for (const frame of storyboard.frames) {
|
||||||
|
if (frame.id === selectedFrameId) break
|
||||||
|
startTime += frame.duration
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only update if different (avoid infinite loop)
|
||||||
|
if (Math.abs(currentTime - startTime) > 0.1) {
|
||||||
|
setCurrentTime(startTime)
|
||||||
|
}
|
||||||
|
}, [selectedFrameId, isPlaying])
|
||||||
|
|
||||||
// Audio playback sync
|
// Audio playback sync
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!audioRef.current) return
|
if (!audioRef.current) return
|
||||||
|
|||||||
Reference in New Issue
Block a user